Почему основной поток убивает мой поток rxJava?
public static void main(final String[] args) throws Exception {
Observable.just(10)
.subscribeOn(Schedulers.newThread())
.subscribe(i -> print(i));
Thread.sleep(100);
}
private static void print(final int i) {
try {
Thread.sleep(5000);
} catch(final InterruptedException e) {
e.printStackTrace();
}
System.out.println(i);
}
print
блокирует поток на 5000 миллисекунд, и я думал, что JVM ожидает завершения всех потоков в приложении. В этом случае после выполнения Thread.sleep(100)
программа закрывается и я не вижу 10
в консоли.
Примечание. Если я буду использовать пользовательский Executor, такой как Executors.newFixedThreadPool(1);
, он будет ждать завершения работы, но с Schedulers.newThread()
этого не произойдет.