Java 将多个观测值合并到一个源
我有很多网络调用,它们发出不同的类型,例如string、int等等 我正在努力使它们平行 在官方rxjava文档中,我们可以阅读:Java 将多个观测值合并到一个源,java,android,kotlin,rx-java,rx-java2,Java,Android,Kotlin,Rx Java,Rx Java2,我有很多网络调用,它们发出不同的类型,例如string、int等等 我正在努力使它们平行 在官方rxjava文档中,我们可以阅读: Flowable.range(1, 10) .parallel() .runOn(Schedulers.computation()) .map(v -> v * v) .sequential() .blockingSubscribe(System.out::println); 这个例子很简单,因为我们所有的类型都是Int。但是如果我们有不
Flowable.range(1, 10)
.parallel()
.runOn(Schedulers.computation())
.map(v -> v * v)
.sequential()
.blockingSubscribe(System.out::println);
这个例子很简单,因为我们所有的类型都是Int。但是如果我们有不同的类型,比如string,boolean,Int,怎么做呢
- 这5个电话都是独立的
- 这5个调用的组将在一个方法中,而此方法将由另一个随机方法调用
- 我们可以假设,5次调用的结果将是第一次调用的类型->
string
- 和/然后/当-通过模式和计划中介组合两个或多个可观察对象发出的项目集
- CombineTest-当一个项目由两个可观察对象中的任何一个发出时,通过指定函数组合每个可观察对象发出的最新项目,并基于此函数的结果发出项目
- 连接-在根据另一个可观察对象发出的项目定义的时间窗口内,当一个可观察对象发出一个项目时,组合两个可观察对象发出的项目
- 合并-通过合并多个观测值的发射,将其合并为一个
- StartWith-在开始从可观测源发射项目之前,发射指定的项目序列
- 开关-将发出可观测值的可观测值转换为发出最近发出的可观测值项的单个可观测值
- Zip-通过指定函数将多个观测值的发射组合在一起,并根据该函数的结果为每个组合发射单个项目
zip
或CombineTest
阅读本文件
我想你也需要知道
RxJava调度程序简介
- Schedulers.io()–它用于执行非CPU密集型操作,如进行网络调用、读取光盘/文件、数据库操作等,它维护一个线程池
- Schedulers.newThread()–使用它,每次调度任务时都会创建一个新线程。通常建议不要使用调度程序,除非有一个非常长的运行操作。通过newThread()创建的线程将不会被重用
- 调度程序。计算()–此调度程序可用于执行CPU密集型操作,如处理海量数据、位图处理等,使用此调度程序创建的线程数完全取决于可用的CPU内核数
- 调度程序。single()–此调度程序将按添加的顺序执行所有任务。当需要顺序执行时,可以使用此选项
- Schedulers.immediate()–此计划程序通过阻塞主线程以同步方式立即执行任务
- Schedulers.trampoline()–它以先进先出的方式执行任务。通过将后台线程数限制为一个线程,将逐个执行所有计划任务
- Schedulers.from()–这允许我们通过限制要创建的线程数量,从执行器创建调度器。当线程池被占用时,任务将排队