Rxjava线程操作

目录
(一):Rx简介
(二):Rxjava基础知识
(三):Rxjava创建操作符
(四):Rxjava的线程操作

(一):Rxjava中的线程

Rxjava是一个异步线程库,异步是它的一大特色。默认情况下rxjava全部的执行是顺序同步的,但是在实际开发中,我们更希望的是Observable发射数据,操作加工数据是在后台处理的,而响应是在当前线程实现的,这里会涉及到使用多线程来操作rxjava,我们可以使用rxjava的调度器(Scheduler)来实现。

(二):Scheduler

Scheduler是rxjava中对线程控制器的一个抽象,rxjava内置了多个Scheduler,它基本满足绝大多数使用场景。

Scheduler作用
single使用定长为1的线程池,重复利用这个线程
newThread每次都启用新线程,并在新线程中执行
computation使用固定长度的线程池,大小为CPU的核数,适用于CPU密集型计算
io适合I/O操作(读写文件,读写数据库,网络访问等)
trampoline直接在当前线程运行,如果当前线程有其他任务正在执行,会先暂停其他任务
Schedulers.from将java.util.concurrent.Executor转换成一个调度器实例,即可以自定义一个Executor来作为调度器
Schedulers

Schedulers是rxjava中的一个静态工厂类,通过Schedulers可以获得多种不同的Scheduler
Schedulers.io(), Schedulers.newThead(); Schedulers.computation(), Schedulers.single(),Schedulers.trampoline()
还可以自定义Scheduler,支持使用Executor来作为调度器

//Schedulers自定义scheduler源码
@NonNull
public static Scheduler from(#NonNull Executor executor){
    return enw ExecutorScheduler(executor);
}

(三):线程调度

默认情况Observable与Observer处于同一个线程,可以使用SubscribeOn()和observeOn()来指定执行的线程
1:subscribeOn
它接受一个Scheduler参数,用来指定对数据发送,数据处理运行在特定的线程调度器Scheduler上。多次执行subscribeOn,只有一个起作用。
2:observeOn
接受一个Scheduler参数,用来指定下游订阅者操作运行在特定的线程调度器上。

Observable.just("song")
    .subscribeOn(Schedulers.io())  //指定发射数据发生在io特性的线程调度器上,也就是发射是在Io新线程中
    .observeOn(Schedulers.newThread()) //指定订阅者是执行在新的线程上。不是主线程
    .subscribe(s -> System.out.println(s));
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值