迭代线程之间共享的数组

时间:2017-05-27 21:35:31

标签: java arrays multithreading

我有一个数组,在程序执行期间大小不会改变。假设有多个线程正在改变这个数组的内容,比如

array[validIndex] = new Entity();

在任何时间点迭代这样的数组是否安全?假设我并不关心数组内部的对象。

2 个答案:

答案 0 :(得分:2)

Java中的数组大小不会改变......永远。

迭代数组本质上是循环遍历数组索引并在每个索引处获取元素 - 无论是显式执行还是使用闪亮的for( Entity e: array ) ...语法 - 因此迭代本身无法进行错误,即使更改了数组内容。

在任何给定的时间点,您将通过迭代看到的对象可能不构成数组内容的有效“快照”,但据我所知,这不是您的问题

答案 1 :(得分:0)

您可以按如下方式使阵列线程安全:

list arryList = new ArrayList(); list arratListNew = Collections.synchronizedList(arrayList);

//这里arratListNew将是线程安全数组。