【问题标题】:Does it matter where to place parallel() call in the stream pipeline?在流管道中放置 parallel() 调用的位置是否重要?
【发布时间】:2021-08-09 17:04:37
【问题描述】:

例如,parallel()filter() 之前

Stream.of(...)
      .parallel()
      .filter(...)
      .forEach(...);

parallel()filter() 之后

Stream.of(...)
      .filter(...)
      .parallel()
      .forEach(...);

调用parallel()的顺序会影响流吗?

【问题讨论】:

    标签: java parallel-processing java-stream


    【解决方案1】:

    parallel() 的放置位置无关紧要。在调用终端操作(在您的情况下为 forEach)之前,不会评估流。

    来自 Javadoc:

    返回一个等效的并行流。可能会返回自身,因为流已经是并行的,或者因为基础流状态被修改为并行。 这是一个中间操作。

    唯一影响顺序的情况是,如果您还调用sequential,在这种情况下适用以下情况:

    最新的顺序或并行模式设置适用于整个流管道的执行。

    欲了解更多信息,请参阅the relevant Javadoc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 2010-10-18
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多