Java 并行流是否有自己的局部变量副本?

Java 并行流是否有自己的局部变量副本?,java,parallel-processing,java-stream,Java,Parallel Processing,Java Stream,我必须对数百万个项目的集合进行迭代,并执行数百次。我看到并行流大大提高了性能 我在for循环中的代码可以自己安全地运行,前提是它可以获得自己在循环中声明的任何变量的副本 因此,我的问题是,并行流中的循环是否获得了它们自己在循环中声明的变量副本?Lambdas可以在其主体内部使用final或有效的final变量,这些变量在lambda主体外部声明。这意味着,这些变量在初始化后不能再更改。因此,线程是否共享同一个变量或使用它的副本并不重要。我不太确定我是否理解您的问题。您有一个lambda作为参数传

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

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


因此,我的问题是,并行流中的循环是否获得了它们自己在循环中声明的变量副本?

Lambdas可以在其主体内部使用final或有效的final变量,这些变量在lambda主体外部声明。这意味着,这些变量在初始化后不能再更改。因此,线程是否共享同一个变量或使用它的副本并不重要。

我不太确定我是否理解您的问题。您有一个lambda作为参数传递给parallelStream。。。。在lambda中,有一个循环。在循环中,创建变量。这是否正确?发布相关代码,以便我们更好地了解您的情况。需要注意的是,如果变量本身包含对可变数据结构的引用,则任何线程都可以修改底层数据结构。例如地图或列表当然可以。这个问题总是在处理线程时出现,它与lambdas无关。你应该用它来代替“准最终”。