使用Java 8和lambda表达式,迭代集合并将其作为流进行操作变得十分容易,而且同样轻松的还能使用并行流。以下是来自文档中的两个示例,第二个示例使用了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()));
只要不关心顺序,使用并行流总是有益的吗?人们可能认为将工作分配到更多核心上会更快。还有其他的考虑因素吗?什么时候应该使用并行流,什么时候应该使用非并行流?(这个问题是用来引发讨论如何以及何时使用并行流,而不是因为我认为总是使用它们是一个好主意。)