plano plano paralelo siempre secuencial
Supongamos que tengo este código:
Collections.singletonList(10)
.parallelStream() // .stream() - nothing changes
.flatMap(x -> Stream.iterate(0, i -> i + 1)
.limit(x)
.parallel()
.peek(m -> {
System.out.println(Thread.currentThread().getName());
}))
.collect(Collectors.toSet());
La salida es el mismo nombre de subproceso, por lo que no hay beneficio deparallel
aquí, lo que quiero decir con eso es que hay un solo hilo que hace todo el trabajo.
DentroflatMap
hay este código:
result.sequential().forEach(downstream);
Entiendo forzar elsequential
propiedad si el flujo "externo" sería paralelo (probablemente podrían bloquear), "externo" tendría que esperar a que termine "flatMap" y viceversa (ya que se usa el mismo grupo común) Pero por quésiempre forzar eso?
¿Es esa una de esas cosas quepodría cambiar en una versión posterior?