如何从Java 8的parallelStream中受益?

时间:2014-04-13 00:10:17

标签: parallel-processing java-8 java-stream

我在[How to dynamically do filtering in Java 8?]问了一个关于使用Java 8进行动态过滤的问题,Stuart Marks非常好地回答了这个问题并提供了一些示例代码来测试:https://gist.github.com/stuart-marks/10076102

由于我是Java 8的新手,所以我想知道以下几行是否会使程序在需要处理大量数据的多核工作站上运行得更快,至少在理论上是这样的:

//  widgetList.stream().filter(compositePredicate).forEach(System.out::println);
    widgetList.parallelStream().filter(compositePredicate).forEach(System.out::println);

//  compositeCriteria.apply(widgetList.stream()).forEach(System.out::println);
    compositeCriteria.apply(widgetList.parallelStream()).forEach(System.out::println);

将“widgetList.stream()”与“widgetList.parallelStream()”相关联会加速这个过程吗?

1 个答案:

答案 0 :(得分:2)

最好的方法是测试它。但请注意:

  • System.our.println是一种同步方法,因此终端操作基本上是顺序的
  • 只有过滤才能从并行化中受益
  • 并行流可能是相当大的列表或计算密集型过滤操作的增益