RxJava (源码待续)学习之调度器Scheduler

上一篇:RxJava 源码学习之组合操作符

如果你想给Observable操作符链添加多线程功能,你可以指定操作符(或者特定的Observable)在特定的调度器(Scheduler)上执行。

调度器种类

RxJava (源码待续)学习之调度器Scheduler_第1张图片
Paste_Image.png

默认调度器(一些操作符对应的调度器)等一些其他知识,大家可以查看官网之调度器。

调度器使用

RxJava提供ObserveOn和SubscribeOn操作符,可以让Observable在一个特定的调度器上执行,ObserveOn指示一个Observable在一个特定的调度器上调用观察者的onNext, onError和onCompleted方法,SubscribeOn更进一步,它指示Observable将全部的处理过程(包括发射数据和通知)放在特定的调度器上执行。

看示例代码:

Observable
        .create(new Observable.OnSubscribe() {
            @Override
            public void call(Subscriber subscriber) {
                System.out.println("create -  当前线程信息:"+Thread.currentThread().getName());
                int i = 1+2+3+4+5+6+7+8+9;
                subscriber.onNext(i);
                subscriber.onCompleted();
            }
         })
        .subscribeOn(Schedulers.computation())  // Observable.from 在 computation 调度器上执行
        .observeOn(Schedulers.io())             // Subscriber 在 io 调度器上执行
        .subscribe(new Subscriber() {
            @Override
            public void onNext(Integer item) {
                System.out.println("next - 当前线程信息:"+Thread.currentThread().getName());
                System.out.println("Next: " + item);
            }
            @Override
            public void onError(Throwable error) {
                System.err.println("Error: " + error.getMessage());
            }
            @Override
            public void onCompleted() {
                System.out.println("Sequence complete.");
            }
        });

//################################
输出结果:
create -  当前线程信息:RxComputationScheduler-1
next - 当前线程信息:RxIoScheduler-2
Next: 45
Sequence complete.

Scheduler调度器的使用需要根据正确的情景环境选择正确的调度器种类。

结束语

Perfect!!! RxJava源码学习到这里就完成啦 :P !RxJava的更多详细知识和拓展,还需要我们不断的在开发使用过程中去发现和总结。如果大家有什么疑问或者指教,欢迎大家评论留言,0!谢谢大家!

你可能感兴趣的:(RxJava (源码待续)学习之调度器Scheduler)