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

  • 相关阅读:
    公用表表达式(CTE)的递归调用
    c# 如何让tooltip显示文字换行
    实战 SQL Server 2008 数据库误删除数据的恢复
    SQL SERVER数据库中 是否可以对视图进行修改删除
    asp.net中实现文件批量上传
    sql server 2008学习2 文件和文件组
    sql server 2008学习3 表组织和索引组织
    sql server 2008学习4 设计索引的建议
    sql server 2008学习10 存储过程
    .net 调用 sql server 自定义函数,并输出返回值
  • 原文地址:https://www.cnblogs.com/wangjiaghe/p/11890834.html
Copyright © 2011-2022 走看看