RxJava 复杂场景 Schedulers调度
参考: https://blog.piasy.com/2016/10/14/Complex-RxJava-2-scheduler/
以Zip为例,学习Schedulers的线程调度
要求:
* create 里的代码在 io 线程执行,
* zip 合并的代码在主线程执行,
* map 的操作在 io 线程执行,
* subscriber 的代码在主线程执行。
Observable<Integer> odd = Observable.create(new Observable.OnSubscribe<Integer>() { @Override
public void call(Subscriber<? super Integer> subscriber) {
System.out.println("1. create odd @ " + Thread.currentThread().getName());
subscriber.onNext(1);
subscriber.onCompleted();
}
}); Observable<Integer> even = Observable.create(new Observable.OnSubscribe<Integer>() { @Override
public void call(Subscriber<? super Integer> subscriber) {
System.out.println("2. create even @ " + Thread.currentThread().getName());
subscriber.onNext(2);
subscriber.onCompleted();
}
}); Observable.zip(
// 決定--> zip 合并的代码在主线程执行
odd.observeOn(AndroidSchedulers.mainThread()),
even,
new Func2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer integer, Integer integer2) {
System.out.println("3. zip @ " + Thread.currentThread().getName());
return integer + integer2;
}
})
// 決定--> create 里的代码在 io 线程执行
.subscribeOn(Schedulers.io())
// 決定--> map 的操作在 io 线程执行
.observeOn(Schedulers.io())
.map(new Func1<Integer, String>() {
@Override
public String call(Integer integer) {
System.out.println("4. map @ " + Thread.currentThread().getName());
return "" + integer;
}
})
// 決定--> subscriber 的代码在主线程执行
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<String>() {
@Override
public void call(String str) {
System.out.println("5. subscribe @ " + Thread.currentThread().getName());
}
});
EDU-CAP4-1X2A-6WE5-YXMB-3G62-L85F-FCA3-2PW
SYN-CAP4-1K7Q-YNYW-LFK5-88DB-X8FN-JCPR-47E
BOX-CAP4-1S4D-BLTF-JLHE-B3ZJ-K3HM-MFKF-S8A
NFR-CAP4-1L7Y-FA7F-QRCY-DSP5-4LPY-DYK5-9P6
EDU-CAP4-123M-TPBK-C93K-DXHE-UPPQ-BS3P-JRN
RxJava 复杂场景 Schedulers调度的更多相关文章
- RxJava使用场景小结
一.Scheduler线程切换 这种场景经常会在“后台线程取数据,主线程展示”的模式中看见 Observable.just(1, 2, 3, 4) .subscribeOn(Schedulers.io ...
- 可能是东半球最全的RxJava使用场景小结
一.Scheduler线程切换 这样的场景常常会在"后台线程取数据,主线程展示"的模式中看见 Observable.just(1, 2, 3, 4) .subscribeOn(Sc ...
- 操作系统双语阅读 - Schedulers调度器2
Most processes can be described as either I/O bound or CPU bound. 大多数进程都可以描述为IO绑定或者CPU绑定. An I/O-bou ...
- RxJava(11-线程调度Scheduler)
转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51821940 本文出自:[openXu的博客] 目录: 使用示例 subscribeOn原理 ...
- 【RxJava Demo分析】(二)Schedulers线程调度器 · Hans Zone
用Schedulers(调度器)实现多任务(并发,Concurrency)的例子 废话不多说我们看一下有关于RxJava的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- 78. Android之 RxJava 详解
转载:http://gank.io/post/560e15be2dca930e00da1083 前言 我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Fli ...
- RxJava学习入门
RxJava是什么 一个词:异步. RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-bas ...
- 给 Android 开发者的 RxJava 详解
我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 .而最近这几个 ...
- 一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库 RxJava,相当好
https://github.com/ReactiveX/RxJava https://github.com/ReactiveX/RxAndroid RX (Reactive Extensions,响 ...
随机推荐
- Objective C 四舍五入,float处理
NSLog(@"平方:%.f", pow(3,2) ); //result 9 NSLog(@"上舍入:%.f", ceil(3.000000000001)); ...
- nagios plugins之 check_http
nagios下的check_http ZT具体参数是一个比较重要的点,我带大家来看看.. //显示版本 #./check_http -V check_http v2053 (nagios-plugin ...
- 扩展DJANGO的LISTVIEW
不用MODEL,不用QUERYSET,而用get_queryset方法来扩展LISTVIEW, 从而实现特定过滤或搜索功能. class DVListView(ListView): template_ ...
- hdu 1730 Northcott Game 博弈论
很简单的博弈论问题,可以转化为Nim 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> ...
- java:比较对象
对象内容相等条件:1.对象类型相同(可用instanceof操作符比较)2.对象的成员变量的值完全相同 instanceof 判断对象类型 //a是否为Child对象类型 boolean b = a ...
- SSH 远程连接
ssh远程连接 准备工作: 1 准备两台linux pc 我们一般用的是VMware虚礼软件 2 这两台linux可以互通 3 linux1 :192.168.2.2 这台为你要连接的服务器 linu ...
- python学习笔记二--列表的使用
一.基本列表操作 1. 合并‘+’:左右两边必须均为列表 可以用str(),%,list()做类型的转换后再做合并 2. 重复‘*’: 3. 迭代和解析: x作为for循环里步进变量,由于列表是序列, ...
- Octave下载
发福利啦,今天下了半天Octave都没下载下来,最后让一个香港的同学帮忙下好传过来的....放到网盘里造福大家 GNU_Octave_3.8.0-6.dmg 链接: http://pan.baidu. ...
- CentOS 6.4 编译安装Mysql 5.6.14
概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server ...
- JavaScript DOM高级程序设计 5动态修改样式和层叠样式表1(源代码)--我要坚持到底!
W3C DOM2样式规范 现在这边贴出本章要的源代码,注意要结合前面用到的ADS库http://vdisk.weibo.com/s/Dq8NU CSSStyleSheet对象属性: type :始终是 ...