Это мой пример кодRxJava: Использование SubscribeOn делает выход программы без завершения
Observable.range(1,5)
.subscribeOn(Schedulers.computation())
.map(Observables05::doSomething)
.subscribe(System.out::println, Throwable::printStackTrace,() -> System.out.println("done"));
Моего йоЗотеЬЫпд Метод,
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
?
Любой путь для достижения этой цели без 'Thread.sleep'? – Dripto