参考: 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调度的更多相关文章

  1. RxJava使用场景小结

    一.Scheduler线程切换 这种场景经常会在“后台线程取数据,主线程展示”的模式中看见 Observable.just(1, 2, 3, 4) .subscribeOn(Schedulers.io ...

  2. 可能是东半球最全的RxJava使用场景小结

    一.Scheduler线程切换 这样的场景常常会在"后台线程取数据,主线程展示"的模式中看见 Observable.just(1, 2, 3, 4) .subscribeOn(Sc ...

  3. 操作系统双语阅读 - Schedulers调度器2

    Most processes can be described as either I/O bound or CPU bound. 大多数进程都可以描述为IO绑定或者CPU绑定. An I/O-bou ...

  4. RxJava(11-线程调度Scheduler)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51821940 本文出自:[openXu的博客] 目录: 使用示例 subscribeOn原理 ...

  5. 【RxJava Demo分析】(二)Schedulers线程调度器 · Hans Zone

    用Schedulers(调度器)实现多任务(并发,Concurrency)的例子 废话不多说我们看一下有关于RxJava的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  6. 78. Android之 RxJava 详解

    转载:http://gank.io/post/560e15be2dca930e00da1083 前言 我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Fli ...

  7. RxJava学习入门

    RxJava是什么 一个词:异步. RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-bas ...

  8. 给 Android 开发者的 RxJava 详解

    我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 .而最近这几个 ...

  9. 一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库 RxJava,相当好

    https://github.com/ReactiveX/RxJava https://github.com/ReactiveX/RxAndroid RX (Reactive Extensions,响 ...

随机推荐

  1. DataGridView 列自适应宽度 设置

    代码: Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; 或者设置DataGridView的AutoSizeColu ...

  2. 团体程序设计天梯赛-练习集L1-008. 求整数段和

    L1-008. 求整数段和 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 杨起帆 给定两个整数A和B,输出从A到B的所有整数以及这些 ...

  3. express 3.0.x 中默认不支持layout.ejs的解决方法

    1.第一种方法用include 用<% include 模板名(可不加.ejs) %>的写法,具体如下 <% include header %> //套用布局拆成两部分 hea ...

  4. 在WIN32 DLL中使用MFC库遇到的问题

    今天写了一个DLL,DLL中用到的一个类里用到的MSXML的COM组件,所以在DLL中要包含afx.h头文件,也就不可避免的要用到MFC的类库了,但在编译时出现了错误:mfcs42d.lib(dllm ...

  5. navicat 导入sql文件乱码问题解决

    一,右键数据库链接,点击链接属性,修改以下信息,如图: 选择高级选项页签==>去掉使用MySQL字符集复选框==>选择GB2312字符编码==>点击确定 三,控制台后,show va ...

  6. APP,webapp 设计相关资料汇集区

    (1).@2x iPhone3GS时代,我们为一个应用提供图标(或按钮提供贴图),只需要icon.png.针对现在的iPhone4~6 Retina显示屏,需要制作额外的@2x高分辨率版本. 例如在i ...

  7. SPRING IN ACTION 第4版笔记-第八章Advanced Spring MVC-006-Pizza例子的支付流程

    一. 1. 2.payment-flow.xml <?xml version="1.0" encoding="UTF-8"?> <flow x ...

  8. Qt xcode wrapper Qios OpenFly

    https://github.com/richardmg/QtWrapper https://github.com/richardmg/qios https://github.com/richardm ...

  9. font-size:100%和font-size:0

    h1,h2,h3,h4,h5,h6 {font-size:100%;} 正常情况下hx按照一定百分比增加字号,但是指定font-size:100%;就会继承body设置的字体大小 font-size: ...

  10. Rails中的MIME类型

    layout title date comments categories post rails的中的MIME类型 2014-09-08 21:40 true ruby Rails开发中经常使用不同的 ...