Parallel processing sequential()在并行流中是如何工作的?

Parallel processing sequential()在并行流中是如何工作的?,parallel-processing,rx-java,flowable,Parallel Processing,Rx Java,Flowable,sequential()操作符是否将ParallelFlowable转换为Flowable流,该流在剩余并行任务仍在运行时或仅在它们完成后才发出项目 例如: 考虑到我有5个长时间运行的时变任务,它们需要并行执行。我使用一个执行这些任务的并行流;之后我添加了一个sequential()操作符;然后是一个take(1)操作符。我会 在其余并行任务执行时获取第一项,或 需要等待所有任务完成后,可并行流动转换为可流动 我希望它应该是上面提到的,但需要确认。如果您不确定RxJava在某些简单情况下的行

sequential()
操作符是否将
ParallelFlowable
转换为
Flowable
流,该流在剩余并行任务仍在运行时或仅在它们完成后才发出项目

例如:
考虑到我有5个长时间运行的时变任务,它们需要并行执行。我使用一个执行这些任务的
并行流
;之后我添加了一个
sequential()
操作符;然后是一个
take(1)
操作符。我会

  • 在其余并行任务执行时获取第一项,或
  • 需要等待所有任务完成后,
    可并行流动
    转换为可流动

我希望它应该是上面提到的,但需要确认。

如果您不确定RxJava在某些简单情况下的行为,最好是用几个
System.out.println()
test()
和一些
assertValues()
编写一个小程序或单元测试()/等,以查看何时何地发生的情况

源代码
.doOnNext(v->System.out.println(“发送的源代码:+v))
//.operator1()
//.operator2()
//等等。
RxJava是一个组合库,这意味着您通常可以隔离源、处理逻辑和最终使用者,以便对它们进行单独测试。例如,您可以用一个简单的
Observable.just()替换网络调用
发出持续的响应。在其他情况下,您可以创建一个
PublishSubject
并以逐步方式调用
onNext
,检查每个响应之后的预期状态

PublishSubject publishSource=PublishSubject.create();
可观察的正方形=公共来源
.地图(v->v*v);
但是,为此,您通常需要将处理逻辑分解为所谓的函数转换方法,这些方法获取类型化但不受约束的源(即
PublishSubject
),并返回一些其他类型(
Observable
)供测试使用者使用和验证

公共静态可观察正方形(可观察源){
返回source.map(v->v*v);
}
可观测的平方=平方(可观测的,仅(2));
可观察的另一个SQR=正方形(publishSource);
最后,您可以使用最后一个
可观察的
源,或者只需查看可以打印到控制台的内容:

square(publishSource)
.doOnNext(v->System.out.println(“输入:+v))
)
.订阅(
v->System.out.println(“输出:+v),
可丢弃::printStackTrace,
()->System.out.println(“完成”)
);
publishSource.onNext(1);
//输入:1
//产出:2
publishSource.onNext(2);
//投入:2
//产出:4
publishSource.onComplete();
//完成
如果转换涉及异步或定时延迟,可以插入
Thread.sleep()
s,以便在输出/断言中分离对多个输入的响应


(至于您想要的确认,
sequential
不会等待所有项目完成,它会在项目可用且下游准备接收时从任何平行轨道发射项目。)

您尝试过吗?我可以解释
sequential()的理论和实践考虑因素
但是你最好写一个简单的序列,看看它能做什么。