如果我这样做:
Observable.just(1)
.flatMap(
//inner chain
Observable.just(2)
.subscribeOn(Schedulers.newThread())
)
.map(// we are in the inner chain thread! //)
.subscribeOn(Schedulers.newThread())
.subscribe()
然后内线将"泄漏"到主要的可观察链。 如何保存原始线程?
提前致谢!
答案 0 :(得分:1)
您必须在flatMap
Scheduler scheduler = ...
Observable.just(1)
.subscribeOn(scheduler)
.flatMap(v -> Observable.just(2).subscribeOn(newThread()))
.observeOn(scheduler)
.subscribe()
如果您想要返回完全相同的线程,可以指定单线程调度程序:
scheduler = Schedulers.from(Executors.newSingleThreadedExecutor());
使用非真正的公共消费
scheduler = new SingleScheduler();
或采用任何标准调度程序并使用RxJava 2 Extension项目的SharedScheduler:
scheduler = new SharedScheduler(Schedulers.computation());