RxJava学习(九)

Scheduler调度器使用及示例

之前提到过subscribeOn和observeOn这两个方法,我在讲一下这两个方法是干啥用的。
subscribeOn
指定被观察者,也就是事件源在哪个线程执行
observeOn
指定观察者运行在哪个线程
通常境况下我们会是事件源运行在其他线程,而观察者运行在主线程,也就是UI线程。

下表展示RxJava中常见的调度器种类:
这里写图片描述

除了之前我们介绍过的subscribeOn/observeOn会用到Scheduler。在RxJava中还有Worker会用到它。

传统的线程

new Thread(new Runnable() {
    @Override
    public void run() {
        // TODO       
    }
}).start();

在RxJava中我们这样写

  Schedulers.newThread().createWorker().schedule(new Action0() {
            @Override
            public void call() {// name:RxNewThreadScheduler-1
                System.out.println("=====name: "+Thread.currentThread().getName());
            }
        });

这样的好处是我们可以直接使用RxJava的线程调度逻辑。并且在合适的时机终止线程

  Scheduler.Worker worker = Schedulers.newThread().createWorker();
        worker.schedule(new Action0() {
            @Override
            public void call() {// name:RxNewThreadScheduler-1
                System.out.println("=====name: "+Thread.currentThread().getName());
            }
        });
        worker.unsubscribe();

除此之外,还有个好处是更容易的实现延迟执行和周期执行:

 //延迟
        Schedulers.computation().createWorker().schedule(new Action0() {
            @Override
            public void call() {

            }
        },3000, TimeUnit.SECONDS);
        //周期
        Schedulers.computation().createWorker().schedulePeriodically(new Action0() {
            @Override
            public void call() {

            }
        },0,1000,TimeUnit.SECONDS);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值