Я немного смущен тем, что происходит, когда есть неперехваченное исключение. Например:Что именно происходит при сбое потока?
public class TestActivity extends Activity {
private Fish fish;
void onCreate(Bundle savedInstanceState) {
new Thread(new Runnable() {
fish.swim();
}).start();
}
}
Код выше сбой приложения при выполнении даже если его в другом потоке, так как рыба никогда не была инициализирована и NPE происходит. Однако:
public class TestActivity extends Activity {
private Fish fish;
void onCreate(Bundle savedInstanceState) {
ScheduledExecutorService executorService =
Executors.newScheduledThreadPool(10);
executorService.schedule(new Runnable() {
@Override
public void run() {
fish.swim();
}
}, 0, TimeUnit.SECONDS);
}
}
Код выше не врезаться приложение, даже если она производит NullPointerException, это потому, что он находится в другой пул потоков? Означает ли это, если у меня есть threadpool с 10 различными потоками, работает ли весь threadpool crash и 9 других потоков?
Я немного смущен, потому что раньше думал о том, что когда поток падает, только эта нить умирает и поток, в котором он жил, не затрагивается. Может кто-нибудь объяснить это мне, пожалуйста?
Новая тема вне жизненного цикла приложения Android. – fukanchik