RxJava 2.0.5 introduced the ParallelFlowable type, corresponding to the Flowable.parallel() operator. I've found that the general advice for achieving parallelism is with flatMap like so:
Flowable.just(1,2,3)
.flatMap(x -> Flowable.just(x)
.observeOn(Schedulers.computation())
.map(y -> y + 1))
.forEach(System.out::println);
When is it appropriate to use flatMap for parallelism, and when is it better to use ParallelFlowable?