当前位置: 首页 > news >正文

帮建网站的人/信息推广

帮建网站的人,信息推广,华为应用市场app下载,做网站的流量怎么算钱RxJava 线程池 线程控制——Scheduler RxJava中的多线程操作主要是由Scheduler集合提供的。在RxJava中,我们无法直接访问或操作线程。如果想要使用线程的话,必须要通过内置的Scheduler来实现。 在RxJava 中,Scheduler ——调度器&#xff…

RxJava 线程池

线程控制——Scheduler

RxJava中的多线程操作主要是由Scheduler集合提供的。在RxJava中,我们无法直接访问或操作线程。如果想要使用线程的话,必须要通过内置的Scheduler来实现。

在RxJava 中,Scheduler ——调度器,相当于线程控制器,RxJava 通过它来指定每一段代码应该运行在什么样的线程。RxJava 已经内置了几个 Scheduler ,它们已经适合大多数的使用场景。

    

  • Schedulers.io():它适用于非CPU密集的I/O工作,比如访问文件系统、执行网络调用、访问数据库等等。这个Scheduler是没有限制的,它的线程池可以按需一直增长。不要把计算工作放在 io() 中,可以避免创建不必要的线程。

  • Schedulers.computation():这个Scheduler用于执行CPU密集的工作,比如处理大规模的数据集、图像处理等等。它由一个有界的线程池作为支撑,线程的最大数量就是可用的处理器数量。

    因为这个Scheduler只适用于CPU密集的任务,我们希望限制线程的数量,这样的话,它们不会彼此抢占CPU时间或出现线程饿死的现象。

  • Schedulers.newThread():总是启用新线程,并在新线程执行操作。

  • Schedulers.single():此款调度器非常简单,由一个线程支持。所以无论有多少个observables,都将只运行在这个线程上。也可将其认为是主线程的一个替代。

  • Schedulers.trampoline():在当前线程立即执行任务,如果当前线程有任务在执行,则会将其暂停,等插入进来的任务执行完之后,再将未完成的任务接着执行。

  • Schedulers.from(Executor executor):我们可以使用它创建自定义的Scheduler,它是由我们自己的Executor作为支撑的。在有些场景下,我们希望创建自定义的Scheduler为App执行特定的任务,这些任务可能需要自定义的线程逻辑。

AndroidSchedulers.mainThread()

这是一个特殊的Scheduler,它无法在核心RxJava库中使用,要使用它,必须要借助RxAndroid扩展库。这个Scheduler对Android App特别有用,它能够在应用的主线程中执行基于UI的任务。

/* 异步任务引用包*/
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.19'

ObservableTransformer 封装

/*** Created by: PeaceJay* Created date: 2020/12/15.* Description: 线程调度封装*/
@SuppressWarnings("unused")
public class Scheduler<T> implements ObservableTransformer<T, T> {@NotNull@Overridepublic ObservableSource<T> apply(Observable<T> upstream) {return upstream.subscribeOn(Schedulers.io()).unsubscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());}/*** 应用线程调度并绑定生命周期管理** @param <T> 泛型* @return 返回转换操作*/public static <T> ObservableTransformer<T, T> apply() {return new Scheduler<>();}
}

compose正式使用

测试用例

        Disposable disposable = Observable.just(1, 2, 3).compose(Scheduler.apply()).subscribe(integer -> {Log.i("TAG", String.valueOf(integer));});

输出:1,2,3

 

http://www.lbrq.cn/news/1099549.html

相关文章:

  • wordpress 博客地址更改/优化流程
  • 免费的网站程序哪里好/竞价广告是怎么推广的
  • e网站建设/微营销平台
  • 展示型网站 asp.net/识图
  • 南京大学特色专业建设网站/公司网站优化方案
  • wordpress网頁/桂林seo排名
  • 佛山公司做网站/长沙网站seo优化公司
  • 刷网站关/最有效的线上推广方式
  • 深圳企业推广网站/怎么开设自己的网站
  • 网站上线后如何换模版/百度客服在哪里找
  • 制作动作游戏吧中文/海外seo是什么
  • 系统门户网站建设常用功能/新闻发稿渠道
  • dw做的网站怎么被别人打开/seo代码优化包括哪些
  • 网站服务器维护方案/网上网络推广
  • 昆明做网站哪家好/企业排名优化公司
  • 网站快速设计/seo网站推广批发
  • 闲置服务器做网站挣钱/网站建设方案外包
  • 承德网站制作公司/小红书推广方式有哪些
  • 永康网站建设/舆情分析
  • 个人未授权做的网站/百度站长平台官网登录入口
  • 忻州推广型网站开发/近期出现的病毒叫什么
  • dedecms 视频网站模板/semi final
  • 中小型网站建设流程/济宁百度竞价推广
  • 做网站的app/小吃培训机构排名前十
  • 网站开发 周期/搜狗搜索推广
  • 网站建设作业多少钱/百度网站首页网址
  • 营销网站的概念/百度智能云建站
  • 微信公众号影视网站怎么做/磁力蜘蛛
  • 网站注册域名位置/黑帽seo是什么意思
  • 上海快速建站/今日新闻 最新消息 大事
  • PyTorch 实现 CIFAR-10 图像分类:从数据预处理到模型训练与评估
  • 玄机——第六章 流量特征分析-蚂蚁爱上树
  • 力扣:动态规划java
  • 【Vue进阶学习笔记】Vue 路由入门指南
  • 万字解析LVS集群
  • 锁步核,为什么叫锁步核?