RxJava线程控制

 RxJava中的线程转换主要通过下面两个方法:

1.subscribeOn

2.observeOn

一、subscribeOn

1.调用一次subscribeOn时:

Observable observable;
Schedulers schedulers;
Observer observer;
observable.subscribeOn(schedulers).subscribe(observer)

通过解析源码可转化为:

observer.onSubscribe();
schedulers线程{observable.subscribe(observer)
}

在原线程调用observer的onSubscribe 方法,并在schedulers的线程中调用observable 的subscribe 方法。

 

2.当多次调用subscribeOn时:

Observable observable;
Schedulers schedulers1;
Schedulers schedulers2;
Observer observer;
observable.subscribeOn(schedulers1).subscribeOn(schedulers2).subscribe(observer)

可转化为:

observer.onSubscribe();
schedulers2线程{schedulers1线程{observable.subscribe(observer)}
}

所以subscribOn只有第一次有效。

二、observeOn

1.调用一次observeOn

Observable observable;
Schedulers schedulers;
Observer observer;
observable.observeOn(schedulers).subscribe(observer)

可转化为:

observer.onSubscribe();
schedulers线程{observer.next()observer.complete()
}

 

当多次调用observeOn时:

Observable observable;
Schedulers schedulers1;
Schedulers schedulers2;
Observer observer;
observable.observeOn(schedulers1).observeOn(schedulers2).subscribe(observer)

可转化为:

observer.onSubscribe();
schedulers1线程{schedulers2线程{observer.next()observer.complete()}
}

 

当时用map操作符时:

observable.map().observeOn(schedulers1).map(function).observeOn(schedulers2).subscribe(observer)

可转化为:

observer.onSubscribe();
schedulers1线程{function.apply()schedulers2线程{observer.next()observer.complete()}
}

 

转载于:https://www.cnblogs.com/zhisuoyu/p/5731780.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

elementui中tabs切换item中的内容会变_中后台UX优化之道

前言“前台重体验,后台重逻辑”,B端谈 UX 有没有价值?一切电子化的今天,运营、审核、电销、账务……无数岗位依赖中后台系统来完成他们的日常工作,好的 UX 确实可以直接为这些产能提效当中后台的工程师们花费了巨大精力…

介体设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 ! 目录 …

判断一个对象是否是空对象的处理办法

目录 前言 方法一,Object.keys()方法,返回对象的属性名组成的一个数组,若长度为0,则为空对象 方法二、for in循环 方法三:将对象转换成字符串,再判断是否等于“{}” 前言 在维护客户基本信息的时候包含…

Oracle 11g RAC 第二节点root.sh执行失败后再次执行root.sh

Oracle 11g RAC 第二节点root.sh执行失败后再次执行root.sh前,要先清除之前的crs配置信息 # /u01/app/11.2.0/grid/crs/install/rootcrs.pl -verbose -deconfig -force # /u01/app/11.2.0/grid/root.sh转载于:https://www.cnblogs.com/abclife/p/5725962.html

jvm需要多长时间才能进行转义分析? 可能比您想象的要长。

这篇文章着眼于转义分析,特别是jvm在运行的程序中执行转义分析需要多长时间。 我做了一些观察,但目前还没有全部解释。 作为介绍,让我们绕道看看jvm -Xcomp中一个鲜为人知且使用更少的标志(这将是一件好事)。 该标志…

postgres 判断null_PostgreSQL NULLIF()用法及代码示例

PostgreSQL的有一个NULLIF函数来处理空值。这个NULLIF函数是PostgreSQL提供的最常见的条件表达式之一。 用法:NULLIF(argument_1,argument_2); 这个NULLIF如果函数返回空值参数_1等于参数_2,否则返回参数_1。 例: 首先,我们创建a 表名为帖子如下: CREATE TABLE posts ( id…

Linux常用操作指令整理,这个操作服务器实在是太方便了

目录 前言 常用指令 系统管理命令 打包压缩相关命令 关机/重启机器 Linux管道 Linux软件包管理 vim使用 用户及用户组管理 更改文件的用户及用户组 文件权限管理 更改权限 前言 由于在银行工作,一个项目需要在云桌面、SIT、UAT、小版本、联调环境、准生产…

http invoker_Http Invoker的Spring Remoting支持

http invokerSpring HTTP Invoker是Java到Java远程处理的重要解决方案。 该技术使用标准的Java序列化机制通过HTTP公开服务,并且可以看作是替代方法,而不是Hessian和Burlap中的自定义序列化。 而且,它仅由Spring提供,因此客户端和…

前端实现数字快速递增_天正CAD教程之递增文字应用实例

好课推荐:1、CAD2014:点击查看 2、室内&全屋:点击查看 3、CAD2019:点击查看4、CAD2018:点击查看5、Bim教程:点击查看 6、室内手绘:点击查看7、CAD三维:点击查看8、全屋定制&…

模板设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 ! 目录 …

CTF常用python库PwnTools的使用学习

之前主要是使用zio库,对pwntools的了解仅限于DynELF,以为zio就可以取代pwntools。后来发现pwntools有很多的高级用法都不曾听说过,这次学习一下用法,希望可以在以后的exp编写中能提供效率。 PwnTools的官网如下:http:/…

账号被暂时禁用使用VScode不能上传代码的解决办法

最近项目在开发的过程中突然不能提交代码,然后使用git账号登录gitee,发现账号账号不能登录了,不知道什么原因导致的禁用,这个账号sunjiaoshou01是被行方同步数据导致的禁用,一问管理员就说是可能一个月没登录会自动封禁…

地图库地之图地图窝_「方舆」秦朝地图及行政区划

秦朝是中国历史上一个极为重要的朝代,由战国时期的秦国发展起来的统一大国,它结束了自春秋起五百年来分裂割据的局面,成为中国历史上第一个大一统的中央集权制国家。秦朝统一六国时,国土面积为214万平方公里,后北收河套…

server端推送消息机制

推送技术相关请参加WIKI: https://zh.wikipedia.org/wiki/%E6%8E%A8%E9%80%81%E6%8A%80%E6%9C%AF 场景: 监控系统:后台硬件温度、电压发生变化;即时通信系统:其它用户登录、发送信息;即时报价系统&#xff…

智能柜台C端代码规范

语法上建议:一、建议尽量使用””代替””上述比较好上述HX0188是一个字符串,用!替代比较好二、引用的组件/插件在当前vue文件内并未使用例:chk_bcip\src\business\common\views\ common-auditwait.vueDevice._$和Utils.AppUtils 都未使用&am…

天才密码 编程_不成为编程天才的5种贡献方式

天才密码 编程安迪莱斯特(Andy Lester)在三月份发布了最初的指南,其中介绍了14种不成为编程天才或摇滚明星而对开源做出贡献的方法 ,我真的很喜欢这个想法。 这就是为什么我决定稍微采纳一下这篇文章,并告诉您如何以及…

华为云电脑和马云无影比_阿里云打造未来电脑无影,却因为5G限制,很难达到普及...

在9月17日,在2020阿里巴巴云栖大会上,阿里云发布了第一台云电脑"无影",极致的简约,一张卡片大小的机器就等于一台电脑了。看到这款电脑的宣传片,真的是极致的未来感,随随便便一块小透明玻璃就是电…

SQL SERVER 2016研究三

2016 SQL SEVER 全程加密程式 column encryption settingEnabled; 重点:需要使用.Net Framework 4.6 新建一个程式如下: 1、创建链接数据库,必选栏位,影响加密。 2、或者在web.config文件数据链接字符串增加如下语句: …

小车故障灯亮显示大全_史上最全汽车故障灯大全,留着一定有用!

大家好,我是汽修小诺,喜欢有关汽车知识的小伙伴请关注我哦,感谢大家!现在有车的朋友越来越多,开车途中难免会遇到汽车故障显示灯亮,从而不知道什么原因,有的朋友不敢开,等修理厂来检…

策略设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 ! 目录 …