首页 > 解决方案 > 在流管道中放置 parallel() 调用的位置是否重要?

问题描述

例如,parallel()之前filter()

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

parallel()之后_filter()

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

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

标签: javaparallel-processingjava-stream

解决方案


你放在哪里都没有关系parallel()forEach在调用终端操作(在您的情况下)之前,不会评估流。

来自 Javadoc:

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

顺序重要的唯一情况是如果您也调用sequential,在这种情况下适用以下情况:

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

有关更多信息,请参阅相关的 Javadoc


推荐阅读