RxJava线程控制
RxJava中的线程转换主要通过下面两个方法:
1.subscribeOn
2.observeOn
一、subscribeOn
1.调用一次subscribeOn时:
Observable observable; Schedulers schedulers; Observer observer; observable.subscribeOn(schedulers).subscribe(observer)
通过解析源码可转化为:
observer.onSubscribe(); schedulers线程{observable.subscribe(observer) }
在原线程调用observer的onSubscribe 方法,并在schedulers的线程中调用observable 的subscribe 方法。
2.当多次调用subscribeOn时:
Observable observable; Schedulers schedulers1; Schedulers schedulers2; Observer observer; observable.subscribeOn(schedulers1).subscribeOn(schedulers2).subscribe(observer)
可转化为:
observer.onSubscribe(); schedulers2线程{schedulers1线程{observable.subscribe(observer)} }
所以subscribOn只有第一次有效。
二、observeOn
1.调用一次observeOn
Observable observable; Schedulers schedulers; Observer observer; observable.observeOn(schedulers).subscribe(observer)
可转化为:
observer.onSubscribe(); schedulers线程{observer.next()observer.complete() }
当多次调用observeOn时:
Observable observable; Schedulers schedulers1; Schedulers schedulers2; Observer observer; observable.observeOn(schedulers1).observeOn(schedulers2).subscribe(observer)
可转化为:
observer.onSubscribe(); schedulers1线程{schedulers2线程{observer.next()observer.complete()} }
当时用map操作符时:
observable.map().observeOn(schedulers1).map(function).observeOn(schedulers2).subscribe(observer)
可转化为:
observer.onSubscribe(); schedulers1线程{function.apply()schedulers2线程{observer.next()observer.complete()} }
转载于:https://www.cnblogs.com/zhisuoyu/p/5731780.html
RxJava线程控制相关推荐
- RXJava之线程控制Scheduler(四),Android面试题
前面讲到了,可以利用 subscribeOn() 结合 observeOn() 来实现线程控制,让事件的产生和消费发生在不同的线程.可是在了解了 map() flatMap() 等变换方法后,有些好事 ...
- RxJava使用(三)Scheduler 线程控制
前言 在默认情况下,即在不指定线程的情况下,RxJava 遵循的是线程不变的原则,即:在哪个线程调用 subscribe(),就在哪个线程生产事件:在哪个线程生产事件,就在哪个线程消费事件. 如果需要 ...
- 【Android】RxJava的使用(四)线程控制 —— Scheduler
前言 经过前几篇的介绍,对RxJava对模式有了一定的理解:由Observable发起事件,经过中间的处理后由Observer消费.(对RxJava还不了解的可以出门左拐) 之前的代码中,事件的发起和 ...
- 给初学者的RxJava2.0教程(二):【线程控制】
CSD转载地址:http://blog.csdn.net/qq_23179075/article/details/79256089 作者:Season_zlc 链接:https://www.jians ...
- 孤荷凌寒自学python第三十八天初识python的线程控制
孤荷凌寒自学python第三十八天初识python的线程控制 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.线程 在操作系统中存在着很多的可执行的应用程序,每个应用程序启动后,就可以看着 ...
- Linux系统编程之进程与线程控制原语对比
Linux系统编程之进程与线程控制原语对比 进程 线程 fork pthread_create exit pthread_exit wait pthread_join kill pthread_can ...
- Java里的线程控制
这篇文章接着上篇文章<<java 线程简介>> 写的. http://blog.csdn.net/nvd11/article/details/19118683 上一篇文章提到, ...
- Win32多线程编程(2) — 线程控制
Win32线程控制只有是围绕线程这一内核对象的创建.挂起.恢复.终结以及通信等操作,这些操作都依赖于Win32操作系统提供的一组API和具体编译器的C运行时库函数.本篇围绕这些操作接口介绍在Windo ...
- Linux 多线程(一)线程概念:线程概念、线程与进程、线程间的独有与共享、多线程与多进程、线程控制
线程概念 线程与进程 线程间的独有与共享 多线程与多进程 线程控制 线程概念 什么是线程 线程是进程中的一条执行流,执行程序中的某部分代码.linux下没有具体实现的线程,只有库函数用pcb来实现的线 ...
最新文章
- 作为项目经理,如何处理好与不同类型客户之间的关系?
- php 数据显示,数据显示处理,该怎么处理
- Jeewx 捷微管家操作配置文档(开源版本)
- python类型检测最终指南--Typing的使用
- 影子卫士汉化语言包 res.ini
- Launcher folder、foldericon
- Redis缓存问题总结
- Oracle Dataguard基于rac主库搭建rac备库
- 让你对DC完全了解的88条名词解释(转)
- word文件的样式如何修改?
- 网上药店领导品牌_药康网
- jme-再现虎式坦克
- Android实现Line登录分享
- android--手机震动--Vibrator
- mac u盘格式化 linux系统文件,U盘重新安装Mac OS系统教程
- DataPipeline丨LinkedIn元数据之旅的最新进展—Data Hub
- Windows个人电脑的自我防护(包括nmap的扫描端口和cmd的跃点追踪)
- 花王洁霸洗衣粉能洗干净衬衣领子
- [Linux]基础知识(一)
- 【考生说】持之以恒才是胜利的推动器、一周时间通过C认证的同学怎么说
热门文章
- java发送文件_java 模拟http发送文件和参数
- nginx配置vue项目500_一个Nginx部署多个vue前端项目总结
- c语言输出每个数占10列宽,杭州师范大学C语言试题第1套介绍.doc
- 生成私钥 p q rsa_【安全】理解 RSA 算法
- 自制串口示波器小工具
- 工控交换机和工业级交换机是怎么区别的,具体有哪些区别?分别应用在什么领域?
- 什么是模拟量光端机?模拟光端机品牌有哪些?
- [渝粤教育] 广东-国家-开放大学 21秋期末考试建筑工程概预算10326k2
- 【渝粤教育】国家开放大学2018年春季 0273-21T中国现代文学 参考试题
- 2021年春季学期期末统一考试 劳动与社会保障法(本) 试题