gpt4 book ai didi

java - parallelStream 终止定义明确吗?

转载 作者:行者123 更新时间:2023-11-30 08:20:43 24 4
gpt4 key购买 nike

我发现我对并行流提供的一致性保证略有挣扎:

1. myList.parallelStream().map(mymapper).forEach(myFn)
2. // Is myFn guaranteed to be called for each element in myList here ?

换句话说,我能否确定将执行 myFn 的所有 forkJoinTask 在第 2 行完成

最佳答案

是的。完整流管道中的并行任务是同步执行的。只有在所有任务完成后才会执行第 2 行。

package documentation for java.util.stream州,

In almost all cases, terminal operations are eager, completing their traversal of the data source and processing of the pipeline before returning.

但是请注意,forEach 任务完成的任何副作用对其他线程可能不是可见的。实际上,forEach 只能通过让其操作执行副作用来运行。如 Stream.forEach javadoc 中所述,该操作必须使用适当的同步或其他构造,以确保线程安全操作和适当的副作用可见性。

关于java - parallelStream 终止定义明确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25843346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com