在可能的情况下,我应该始终使用并行流吗?
使用 Java 8 和 lambdas,可以很容易地将集合作为流进行迭代,并且同样容易使用并行流。文档中的两个示例,第二个示例使用 parallelStream:
myShapesCollection.stream()
.filter(e -> e.getColor() == Color.RED)
.forEach(e -> System.out.println(e.getName()));
myShapesCollection.parallelStream() // <-- This one uses parallel
.filter(e -> e.getColor() == Color.RED)
.forEach(e -> System.out.println(e.getName()));
只要我不关心顺序,使用并行总是有益的吗?有人会认为它更快地将工作划分到更多内核上。
还有其他注意事项吗?何时应使用并行流,何时应使用非并行流?
(提出这个问题是为了引发关于如何以及何时使用并行流的讨论,而不是因为我认为始终使用它们是一个好主意。