【发布时间】:2011-01-16 01:06:04
【问题描述】:
如果在 doSomething() 中修改了列表,此代码将引发并发修改异常。是否可以通过将代码包含在某个同步块中来避免它?
List l = Collections.synchronizedList(new ArrayList());
// normal iteration -- can throw ConcurrentModificationException
// may require external synchronization
for (Iterator i=list.iterator(); i.hasNext(); ) {
doSomething(i.next());
}
【问题讨论】:
-
"请注意,此异常并不总是表明对象已被 不同 线程同时修改。"所以这将是一个不。
-
什么时候可以抛出这个异常。
-
如果 doSomething() 在同一个或不同的线程中修改了 'list'。 ConcurrentModificationException 与线程无关。
标签: java exception iterator collections synchronized