2) Scheduler 的原理
其实, subscribeOn()
和 observeOn()
的内部实现,也是用的 lift()
。具体看图(不同颜色的箭头表示不同的线程):
subscribeOn()
原理图:
![subscribeOn() 原理](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTk1NjEyNy0wYjQxMzQ2NGQ0ZTEyZDNjLmpwZw?x-oss-process=image/format,png)
observeOn()
原理图:
![observeOn() 原理](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTk1NjEyNy01ODE3YTdmMDZiZmVlOTI3LmpwZw?x-oss-process=image/format,png)
从图中可以看出,subscribeOn()
和 observeOn()
都做了线程切换的工作(图中的 “schedule…” 部位)。不同的是, subscribeOn()
的线程切换发生在 OnSubscribe
中,即在它通知上一级 OnSubscribe
时,这时事