rxjava1,2之线程变换

发出数据的时候在我们指定的线程,收到数据的时候在我们的主线程。

概念:
1,让代码可以在不同的现成执行。
2,subscribeOn——订阅时的线程(自己指定的线程,也就是发射数据的线程)。
3,observeOn——接收时的线程(同样是自己指定的线程)。
4,Scheduler——实际做线程变换(在上面这俩方法中传入的都是Scheduler对象)。

总结:
1,rxjava1和rxjava2都用了Scheduler调度者。
2,rajava1用的是操作符 Operator,rxjava2用的也是操作符那一套AbstractObservableWithUpstream。

线程变换源码分析:
Scheduler身为调度者的变换原理分析及源码
RXJAVA1:
1,Scheduler抽象类
2,Worker——真正做线程调度的类
3,Action0——在线程中执行的操作
4,schedule——实际做线程调度的方法。入参为Action0

Scheduler到底是什么:
作为一个抽象类,里面干活的最重要的就是Worker类
1,传入不同的Scheduler来使用不同的线程
2,用Scheduler创建Worker来使用真正的线程池
3,传入具体的操作Action0
4,通过schedule方法来实现调度,实际上也就是在schedule中将传入的Action0层层包装,最后调用a ction0.call方法

Android中的Scheduler:
就是先 包装成Massage对象。通过Handler和Looper做到线程之间的调度的。

RXJAVA2:
1,Scheduler抽象类
2,Worker——真正做线程调度的类
3,Runnable——在线程中执行的操作
4,schedule——做线程调度的方法,入参为Runnable

白话:也就是将我们传入的Runnable在NewThreeWorker中包装几次,最后还是个runable,之后再扔进对应的线程池中执行。

Android中的Scheduler:
将其包装成message对象,通过handler放入mainLooper中去执行。不一定非要是main线程

 





















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值