concat将多个可观察对象连接到一个源

khbbv19g  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(323)

我有很多网络调用,它们发出不同的类型,例如字符串、int等等。
我想让它们平行。
在rxjava官方文档中,我们可以看到:

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

u0njafvf

u0njafvf1#

组合观测值
使用多个源可观察对象创建单个可观察对象的运算符
and/then/when-通过模式和计划中介组合两个或多个可观察对象发出的项集
combineTest—当一个项目由两个可观察对象中的任何一个发出时,将每个可观察对象通过指定函数发出的最新项目合并,并基于此函数的结果发出项目
join—在根据另一个可观察项发出的项定义的时间窗口内,每当一个可观察项发出一个项时,组合两个可观察项发出的项
合并-通过合并多个观测到的辐射,将其合并为一个
startwith-在开始从可观察的源发出项之前,发出指定的项序列
切换-将一个发出可见光的可见光转换为一个发出最近发出的可见光的项目的可见光
zip-通过一个指定的函数将多个观测值的发射组合在一起,并基于该函数的结果为每个组合发射单个项目
我想你可以用 zip 或者 combineLatest 阅读此文档http://reactivex.io/documentation/operators.html#combining
我想你也需要知道
rxjava调度程序简介。
io()–它用于执行非cpu密集型操作,如进行网络调用、读取光盘/文件、数据库操作等,它维护一个线程池。
newthread()–使用它,每次调度任务时都会创建一个新线程。通常建议不要使用调度程序,除非有一个非常长的运行操作。通过newthread()创建的线程将不会被重用。
schedulers.computation()–此调度程序可用于执行cpu密集型操作,如处理大量数据、位图处理等,使用此调度程序创建的线程数完全取决于可用的cpu内核数。
schedulers.single()–此计划程序将按添加的顺序执行所有任务。当需要顺序执行时,可以使用此方法。
immediate()–这个调度程序通过阻塞主线程以同步方式立即执行任务。
trampoline()–它以先进先出的方式执行任务。通过将后台线程数限制为一个线程,所有计划任务将逐个执行。
schedulers.from()–这允许我们通过限制要创建的线程数,从执行器创建调度器。当线程池被占用时,任务将排队。

相关问题