observerOn(…)会创建一个新的Stream,doOnComplete(…)相对于observeOn(…)的前后关系,决定doOnComplete(…)运行在哪个线程上。
- 之前:运行在前面Stream所使用的线程。
- 之后:运行在新建Stream所使用的线程。
Example:
Observable.just(1) .subscribeOn(Schedulers.io()) .doOnNext(val -> System.out.println("doOnNext: " + Thread.currentThread())) .doOnComplete(() -> System.out.println("doOnComplete1: " + Thread.currentThread())) .observeOn(Schedulers.computation()) .doOnComplete(() -> System.out.println("doOnComplete2: " + Thread.currentThread())) .subscribe(val -> System.out.println("subscribe: " + Thread.currentThread()));
输出结果: