如果可能的话,我应该总是使用并行流吗?使用Java 8和lambda,可以很容易地将集合作为流来迭代,而且使用并行流也同样容易。两个例子医生,第二个使用并行流: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()));只要我不关心顺序,使用并行总是有益的吗?人们可能会认为,在更多的核心上划分工作会更快。还有其他考虑吗?什么时候应该使用并行流,什么时候应该使用非平行流?(这个问题被要求引发关于如何和何时使用并行流的讨论,而不是因为我认为总是使用它们是个好主意。)
3 回答

慕田峪7331174
TA贡献1828条经验 获得超13个赞
我有大量的项目要处理(或者每个项目的处理需要时间,并且是可并行的) 我一开始就有表演问题 我还没有在多线程环境中运行进程(例如:在web容器中,如果我已经有许多请求并行处理,那么在每个请求中添加一个额外的并行层可能会产生更多的负面影响而不是积极的影响)。
System.out.println()
添加回答
举报
0/150
提交
取消