【发布时间】:2018-11-21 12:50:26
【问题描述】:
这是我的代码:
public static void main(String[] args) {
Observable.just("747", "737", "777")
.flatMap(
a -> {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return Observable.just(a).subscribeOn(Schedulers.newThread());
})
.subscribe(p -> System.out.println("Received " + p + " on thread " + Thread.currentThread().getName()));
}
据我了解,observable 的每个项目都应该在单独的线程中运行(确实会发生),并且结果将被发送到执行工作的同一线程(也会发生)。但我无法理解的是,为什么main 线程没有退出并等待后台线程完成?只要每个后台线程都在运行,程序就会继续运行。
【问题讨论】:
-
尝试检查是否有线程在后台运行,并增加
Thread.sleep(5000);以及减少后台线程中的sleep。 -
在
.subscribe(...)之后添加.dispose()会发生什么? :) -
@i_th 唯一运行的后台线程是主线程。
标签: java multithreading rx-java reactive-programming