Flowable.parallel vs Flowable.flatMap?

时间:2017-05-31 17:25:55

标签: rx-java rx-java2

RxJava 2.0.5引入了ParallelFlowable类型,对应于Flowable.parallel()运算符。我发现实现并行性的一般建议是flatMap,如此:

Flowable.just(1,2,3)
    .flatMap(x -> Flowable.just(x)
        .observeOn(Schedulers.computation())
        .map(y -> y + 1))
    .forEach(System.out::println);

何时使用flatMap进行并行操作是合适的,何时使用ParallelFlowable会更好?

1 个答案:

答案 0 :(得分:9)

  

我发现实现并行性的一般建议是使用flatMap,如下所示:

这些建议来自parallel的引入之前,因此应该考虑API演变。

  

什么时候使用flatMap进行并行化是合适的,何时使用ParallelFlowable更好?

ParallelFlowable拥有一组有限的运算符:mapfilterdoOnNextreduceflatMap等,而不是完整的Flowable API。因此,如果你有一些并行的“异国情调”无法用上面的运算符来表达,你应该坚持基于Flowable.flatMap的并行性(或者考虑groupBy并行性)。

否则,here是并行化方法(code)之间的基准比较。