【发布时间】:2009-09-30 05:01:19
【问题描述】:
我有一小段代码,它给了我并发修改异常。我不明白为什么我一直得到它,即使我没有看到正在执行任何并发修改。
import java.util.*;
public class SomeClass {
public static void main(String[] args) {
List<String> s = new ArrayList<>();
ListIterator<String> it = s.listIterator();
for (String a : args)
s.add(a);
if (it.hasNext())
String item = it.next();
System.out.println(s);
}
}
【问题讨论】:
-
最好使用 CopyOnWriteArrayList 代替 ArrayList,例如 List
myList = new CopyOnWriteArrayList ();在处理 CopyOnWriteArrayList 时,您可以在运行时修改列表,而迭代器可以毫无问题地迭代列表。
标签: java concurrentmodification