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对象的各个方法的处理执行在指定的线程中。

最新文章

  1. windows下pip安装python模块时报错总结
  2. 习课省市区的三级联动(cxselect的使用)
  3. Android 打包
  4. Echarts-画柱状,折线图
  5. VisualSVN Server和Subversion的联系
  6. 使用NHibernate(9)-- 缓存
  7. HttpServlet详解
  8. while循环中不支持循环使用curl
  9. iOS iOS7越狱
  10. nginx+uwsgi+django
  11. CSS3----background:-webkit-gradient()渐变效果
  12. Date的使用
  13. Spring MVC中的HandlerMapping与HandlerAdapter
  14. VMware下设置Centos7联网与固定IP连接Xshell
  15. bzoj 4916: 神犇和蒟蒻 (杜教筛+莫比乌斯反演)
  16. SpringSecurity实现短信验证码登录(Token)
  17. 【转】MySQL用户管理及SQL语句详解
  18. 关于话题模型(topic model)的一些思考
  19. ofo退押金脚本
  20. Linux和Windows中查看端口占用情况

热门文章

  1. Centos 安装 kubectl kubelet kubeadm
  2. 小程序UI设计(10)-巧用模板,事半功倍
  3. oracle学习1 基于oracle数据库的PLSQL编程以及存储过程的创建和使用视频
  4. updatedepthtexture 和 screen space shadow 开关
  5. shell通配符
  6. hdu 6065 RXD, tree and sequence
  7. 51 Nod1042 数字0到9的数量
  8. 6.Servlet、Filter过滤器以及监听器
  9. webpack打包.vue文件
  10. luogu4212