Scheduler(二)

1.Scheduler 的原理

RxJava 遵循的是线程不变的原则,即:在哪个线程调用 subscribe(),就在哪个线程生产事件;在哪个线程生产事件,就在哪个线程消费事件。如果需要切换线程,就需要用到 Scheduler (调度器)。

subscribeOn() 原理图:

subscribeOn()通过操作特定的Scheduler,通知Observable在指定线程执行。

Scheduler(二)_第1张图片

observeOn() 原理图:

ObserveOn()通过操作特定的Scheduler,让Observable指定Observers的执行线程;

Scheduler(二)_第2张图片

如下图所示:

SubscribeOn()指定了事件源将要执行的线程,无论在操作符链的那个位置被调用;因此,不管SubscribeOn()方法调用了多少次,只有离事件源最近的一个会生效,其他都被最近的一个截断了。

ObserveOn()指定的是方法调用以后,Observers所执行的线程。因此,我们可以在操作符链中,多次调用ObserveOn()来切换执行的线程。

你可能感兴趣的:(Scheduler(二))