【问题标题】:How to benefit from Java 8's parallelStream?如何从 Java 8 的 parallelStream 中受益?
【发布时间】:2014-05-27 02:08:04
【问题描述】:

我在 [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.parallelStream()”替换“widgetList.stream()”会加快进程吗?

【问题讨论】:

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


    【解决方案1】:

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

    • System.our.println是同步方法,所以终端操作本质上是顺序的
    • 因此只有过滤才能从并行化中受益
    • 并行流可能会为相当大的列表或计算密集型过滤操作带来好处

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 2018-11-24
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多