在Java中,我应该在放弃之前在本地复制一个易失性引用吗?
2022-09-04 03:05:17
如果我有以下情况
private volatile Collection<Integer> ints;
private void myMethod()
{
for ( Integer i : ints )
{
...
}
}
ints 集合永远不会更改,但整个集合可能会被另一个线程替换(因此它是一个不可变的集合)。
在迭代 ints 变量之前,我应该在本地复制它吗?我不确定它是否会被多次访问。即迭代集合,另一个线程替换集合,代码继续迭代,但使用新集合。
编辑:这个问题与有关foreach如何在内部工作的其他信息有关。