Rxjava2实战--第四章 Rxjava的线程操作
2024-09-01 21:18:12
Rxjava2实战--第四章 Rxjava的线程操作
1 调度器(Scheduler)种类
1.1 RxJava线程介绍
默认情况下,
1.2 Scheduler
Sheduler | 作用 |
---|---|
single | 使用定长为1的线程池(new ScheduledThread Pool(1)),重复利用这个线程 |
newThread | 每次都启用线程,并 在新线程中执行操作 |
computation | 使用固定的线程池(Fixed Scheduler Pool),大小为CPU核数,适用于CPU密集型计算 |
io | 适合I/O操作(读写文件、读写数据库、网络信息交互等)所使用的Scheduler。行为模式和newThread()差不多,区别在于io()的内部实现是用一个无数量上限的线程池,,可以重用空闲的线程,因此多数情况下,io()比newThread()更有效率 |
trampoline | 表示立即执行,如果当前线程有任务在执行,则会将其暂停,等插入进来的新任务执行完成之后,再接着执行原先未完成的任务。 |
Scheduleres.from | 将java.util.concurrent.Executor转换成一个调度器实例, 即可以自定义一个Excutor来作为调度器 |
2 RxJava线程模型
RxJava的被观察者们在使用操作符时可以利用线程调度器---Scheduler来切换线程。
2.1 线程调度器
2.2 线程调度
默认情况下不做任何线程处理, Observable Observer 处于同一线程中。如果想要切换线 程,则可以使用 subscribeOn()和 observeOn()。
1 subscribeOn
subscribeOn 通过接收一个 Scheduler 参数,来指定对数据的处理运行在特定的线程调度器 Scheduler上。
若多次执行 subscribeOn ,则只有一次起作用 。
在RxJava 链式操作 中, 数据的处理是自下而上的 ,这点与数据发射正好相反。如果多次 调用 subcribeOn(),则最上面的线程切换最晚 ,所以就变成了只有第一次切换线程才有效。
2 onbserveOn
observeOn 同样接收一个 Scheduler 参数 ,用来指定下游操作运行在特定的线程调度器 Scheduler 上。
若多次执行 observeOn(),则每次都起作用 ,线程会一直切换。
若下游多次调用observeOn(),则线程会一直切换。每次切换线程,都会把对应的Observer对象的各个方法的处理执行在指定的线程中。
最新文章
- windows下pip安装python模块时报错总结
- 习课省市区的三级联动(cxselect的使用)
- Android 打包
- Echarts-画柱状,折线图
- VisualSVN Server和Subversion的联系
- 使用NHibernate(9)-- 缓存
- HttpServlet详解
- while循环中不支持循环使用curl
- iOS iOS7越狱
- nginx+uwsgi+django
- CSS3----background:-webkit-gradient()渐变效果
- Date的使用
- Spring MVC中的HandlerMapping与HandlerAdapter
- VMware下设置Centos7联网与固定IP连接Xshell
- bzoj 4916: 神犇和蒟蒻 (杜教筛+莫比乌斯反演)
- SpringSecurity实现短信验证码登录(Token)
- 【转】MySQL用户管理及SQL语句详解
- 关于话题模型(topic model)的一些思考
- ofo退押金脚本
- Linux和Windows中查看端口占用情况