首页 > 解决方案 > 并行流是否有自己的局部变量副本?

问题描述

我必须迭代数百万个项目的集合,并执行数百次。我看到并行流大大提高了性能。

我在 for 循环中的代码可以自己安全地运行,只要它获得循环中声明的任何变量的自己的副本。

所以我的问题是,并行流中的循环是否会获得自己在循环中声明的变量副本?

标签: javaparallel-processingjava-stream

解决方案


Lambda 只能在其主体内部使用“最终”或“有效最终”变量,这些变量在 lambda 主体外部声明。这意味着,这些变量在初始化后不能再更改。因此,线程是否“共享”相同的变量或使用它的副本并不重要。


推荐阅读