It's an overstatement to say that forEachOrdered/foldLeft cannot exploit parallelism. If I have a stream:

    stream.parallel()
          .map(e -> expensiveFn(e))
          .forEachOrdered(e -> ...);

We still can (and do) perform the mapping in parallel even if we cannot perform the folding step yet. See ForEachOps.ForEachOrderedTask.

On 8/13/2017 3:45 PM, Remi Forax wrote:
Hi Tagir,
foldLeft (and foldRight) were intentionally not included in the Stream API 
because as you know, their semantics is too strong to be useful for parallel 
streams.

regards,
Rémi

----- Mail original -----
De: "Tagir Valeev" <amae...@gmail.com>
À: "core-libs-dev" <core-libs-dev@openjdk.java.net>
Envoyé: Dimanche 13 Août 2017 15:27:36
Objet: RFR: JDK-8133680 add Stream.foldLeft() terminal operation
Please review the preliminary implementation for Stream foldLeft and
foldRight operations:

http://cr.openjdk.java.net/~tvaleev/webrev/8133680/r1/

This implementation has no tests yet. Before writing them I'd like to
be sure that this enhancement could be accepted in general (or
probably foldLeft is accepted and foldRight is not?) Could anybody
sponsor it when it will be complete?

Thank you in advance!

Tagir Valeev.

Reply via email to