Есть что-то, что я не понимаю нитями в целом. В моем случае с использованием Java и Android.Thread in thread: что происходит, если родительский поток убит?
Предположим, у меня есть нить с именем 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
Вы найдете эту конструкцию Parent/Child-Ownership, когда работаете с процессами, а не когда работаете с потоками! – ParkerHalo
Да, например, при использовании 'fork()' в C? – FrenchFalcon