在流管道中放置 parallel() 调用是否重要?

jim*_*hem 3 java parallel-processing java-stream

例如,parallel()之前filter()

Stream.of(...)
      .parallel()
      .filter(...)
      .forEach(...);
Run Code Online (Sandbox Code Playgroud)

parallel()filter()

Stream.of(...)
      .filter(...)
      .parallel()
      .forEach(...);
Run Code Online (Sandbox Code Playgroud)

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

Jer*_*eke 5

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

来自 Javadoc:

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

顺序重要的唯一情况是,如果您还调用sequential,则以下情况适用:

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

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