Mit Java 8 und Lambdas ist es einfach, über Kollektionen als Streams zu iterieren und genauso einfach, einen parallelen Stream zu nutzen. Zwei Beispiele aus den docs, das zweite mit parallelStream:
myShapesCollection.stream()
.filter(e -> e.getColor() == Color.RED)
.forEach(e -> System.out.println(e.getName()));
myShapesCollection.parallelStream() // <-- Dieser nutzt parallel
.filter(e -> e.getColor() == Color.RED)
.forEach(e -> System.out.println(e.getName()));
Solange die Reihenfolge nicht wichtig ist, wäre es immer vorteilhaft, den parallel zu verwenden? Man könnte denken, dass es schneller ist, die Arbeit auf mehrere Kerne aufzuteilen.
Gibt es andere Überlegungen? Wann sollte parallel stream verwendet werden und wann sollte der nicht-parallele verwendet werden?
(Diese Frage ist gestellt, um eine Diskussion darüber auszulösen, wie und wann parallele Streams verwendet werden sollen, nicht weil ich denke, dass es immer eine gute Idee ist, sie zu verwenden.)