【发布时间】:2015-01-18 11:26:48
【问题描述】:
我在实现Runnable 的类中使用listIterator() 访问和删除LinkedList 中的项目我还在程序的其他部分同时修改此列表的值。
我在这部分代码中使用listIterator() 的地方是我从这个函数调用中得到ConcurrentModificationException:
java.util.LinkedList$ListItr.checkForComodification
为什么会出现这种情况以及如何预防?
@Override
public void run()
{
while(true)
{
itr = nodeAttributes.listIterator();
while (itr.hasNext())
{
System.out.println("enterred");
nodeAttribute nA = (nodeAttribute) itr.next();
//System.out.println("for");
if(!nA.isMoving && !nA.moveQueue.isEmpty())
{
if(animator != null)
animator.stop();
animator = (Animator) nA.moveQueue.poll();
//itr.remove();
animator.start();
nA.isMoving = true;
System.out.print( "animator");
}
}
System.out.println( "looping");
}
}
【问题讨论】:
-
你有类似堆栈跟踪的东西,所以你知道它出现在哪一行吗?
-
不,我不知道它发生在哪一行。
-
您是否尝试过使用 try catch 来处理您的内部 for 循环的内容?
标签: java multithreading concurrency iterator