RxJava分析(二)线程调度原理

线程切换

  • subscribeOn
    1.影响其调用之前的线程, 包括Observable 的创建操作符中的线程, 以及 其调用之前最近的doOnSubscribe 中的线程。
    2.只有第一个subscribeOn 切换线程会起作用。
    3.只有在observeOn之前的subscribeOn 会起作用, 即在observeOn调用之后再次调用subscribeOn 是无效的。
  • observeOn
    1.影响其调用之后的线程

订阅的过程是自下而上的,当里面的Obserable订阅包装后的Observer的时候,主要关注subscribeActual中的方法。
如果是subscribeOn(xxx),那么就会createWorker()创建线程并立刻在线程中执行任务,接下来的所有订阅都将执行在切换后的线程中,因此,第一个subscribeOn之前的变换都将执行在该subscribeOn所指定的线程中。
而对于observeOn(xxx),它也切换了线程,但并不会立刻执行,它会在订阅完成后,自上而下执行的时候再切换线程,所以observeOn(xxx)所影响的是它之后的变换,直到下一个observeOn(xxx),又会切换到新的线程进行变换。

参考:
https://www.jianshu.com/p/9e3930fbcb26

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github: https://...
    松江野人阅读 6,005评论 0 1
  • 作者寄语 很久之前就想写一个专题,专写Android开发框架,专题的名字叫 XXX 从入门到放弃 ,沉淀了这么久,...
    戴定康阅读 7,677评论 13 85
  • 最近项目里面有用到Rxjava框架,感觉很强大的巨作,所以在网上搜了很多相关文章,发现一片文章很不错,今天把这篇文...
    Scus阅读 6,925评论 2 50
  • 市面上健身减肥的套路很多,我只是在不经意间,完成了一次减重30斤的过程,期间的一点点经过(绝对不敢说是经验),随便...
    胡誠阅读 312评论 6 0
  • 昨天背完了《唐诗三百首》中,最后一首和出塞、战争有关的诗:李益写的《夜上受降城闻笛》。(有三首岑参的长诗《走马川行...
    钟爱八音盒阅读 237评论 0 1