Это мой пример кода
Observable.range(1,5)
.subscribeOn(Schedulers.computation())
.map(Observables05::doSomething)
.subscribe(System.out::println, Throwable::printStackTrace, () -> System.out.println("done"));
Мой метод doSomething:
public static int doSomething(int i) {
try {
System.out.println("Processing " + i +
" on Thread -- " + Thread.currentThread().getName());
Thread.sleep(500);
return i;
} catch (InterruptedException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
Использование только примера кода в моем основном потоке просто завершает работу программы. Однако, если после этого используется Thread.sleep(3000)
, программа работает правильно до выхода, когда заканчивается время сна.
Это ожидаемое поведение и почему? Как я могу запустить этот код без использования Thread.sleep
?