Почему основной поток убивает мой поток 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()
не будет.