详解 RxJava 的消息订阅和线程切换原理
2022-01-04 本文已影响0人
ModestStorm
https://juejin.cn/post/6844903619947397134
subscribleOn:被观察者事件生产所在的线程
observerOn:观察者观察到被观察者发送的事件时处理事件所在的线程,包括onNext,onComplete事件执行
内部通过大量的将旧对象包装成新对象扩展事件发送和事件接收处理能力
RX java线程切换的逻辑:
(1)创建执行的Scheduler,具体执行是它的多个子类比如IOScheduler,执行任务时schedule内部是通过线程池执行woker实现。
(2)发送事件时封装worker任务,然后通过观察者设置的Scheduler,执行线程池中的worker任务如onNext,onCompilete,onNext任务是存储在队列中的,从队列中不断循环执行onNext任务,当队列为空代表执行完成,然后调用onComplete