【发布时间】:2013-12-20 22:16:45
【问题描述】:
使用 Java 8 和 lambdas,可以很容易地将集合作为流进行迭代,并且使用并行流同样容易。来自the docs的两个例子,第二个使用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()));
只要我不关心顺序,使用并行总是有益的吗?人们会认为在更多内核上划分工作会更快。
还有其他注意事项吗?什么时候应该使用并行流,什么时候应该使用非并行?
(问这个问题是为了引发关于如何以及何时使用并行流的讨论,并不是因为我认为总是使用它们是一个好主意。)
【问题讨论】:
标签: java parallel-processing java-8 java-stream