有一些我一般無法理解的線程。在我的情況下,使用Java和Android的 。線程內線程:如果父線程被終止會發生什麼?
比方說,我有一個名爲A
的線程,它啓動線程B
。如果線程A
停止,則線程B
將繼續存在。這怎麼可能?現在誰屬於線程B
?到主線程?
Thread類
public class ParentThread extends Thread {
public void run(){
Log.e("PARENT THREAD", "STARTS RUNNING");
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
Log.e("CHILD THREAD", "IS ALIVE");
try {
Thread.sleep(1000);
}
catch (InterruptedException exc) {
e.printStackTrace();
}
}
}
}).start();
Log.e("PARENT THREAD", "STOPS RUNNING");
}
}
活動
new ParentThread().start();
logcat的輸出
01-07 13:45:16.726 22063-22081/? E/PARENT THREAD: STARTS RUNNING
01-07 13:45:16.726 22063-22081/? E/PARENT THREAD: STOPS RUNNING
01-07 13:45:16.727 22063-22082/? E/CHILD THREAD: IS ALIVE
01-07 13:45:17.727 22063-22082/? E/CHILD THREAD: IS ALIVE
01-07 13:45:18.727 22063-22082/? E/CHILD THREAD: IS ALIVE
01-07 13:45:19.727 22063-22082/? E/CHILD THREAD: IS ALIVE
...
線程不相互「屬於」。他們甚至沒有父母。 – immibis
當您使用流程時,而不是在使用線程時,您會發現此父/子所有權構造! – ParkerHalo
是的,就像在C中使用'fork()'時一樣? – FrenchFalcon