首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >parallelStream终止定义良好吗?

parallelStream终止定义良好吗?
EN

Stack Overflow用户
提问于 2014-09-15 08:04:28
回答 1查看 172关注 0票数 2

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

代码语言:javascript
复制
1. myList.parallelStream().map(mymapper).forEach(myFn)
2. // Is myFn guaranteed to be called for each element in myList here ?

换句话说,我是否可以确保执行myFn的所有myFn都在第2行完成?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-15 08:21:30

是。在一个完整的流管道内的并行任务被同步执行。第2行只有在所有任务完成后才能执行。

用于java.util.stream的包文档说,

在几乎所有的情况下,终端操作都是急切的,在返回之前完成对数据源的遍历和对管道的处理。

但是,请注意,forEach任务完成的任何副作用对其他线程都可能是不可见的。在实践中,forEach只能通过其动作执行副作用来操作。正如在javadoc中提到的,操作必须使用适当的同步或其他构造,以确保线程安全操作和副作用的适当可见性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25843346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档