zoukankan      html  css  js  c++  java
  • Rxjava2实战--第四章 Rxjava的线程操作

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

  • 相关阅读:
    SQL 操作总结
    WaitHandle.WaitOne的第二参数
    java泛型测试
    生成商品静态页的类和方法
    CodeSmith4.1在控制台根据模板生成文件
    Eclipse中最常用的热键
    struts2的struts.properties配置文件详解 (转)
    eclipse rcp 多线程
    eclipse RPC加载Spring 容器
    使用Apache+tomcat比单独使用tomcat能带来什么样的好处及坏处
  • 原文地址:https://www.cnblogs.com/wangjiaghe/p/11890834.html
Copyright © 2011-2022 走看看