Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
抛出java.util.ConcurrentModificationException_Java_Exception_Concurrentmodification - Fatal编程技术网

抛出java.util.ConcurrentModificationException

抛出java.util.ConcurrentModificationException,java,exception,concurrentmodification,Java,Exception,Concurrentmodification,这是我的蛇游戏代码中的一个函数。基本上,我最初是在做一个for来遍历LinkedList,这就是snake,但是由于它抛出了异常,我认为使用迭代器来更改它会有所帮助。 显然不是。 我怎样才能解决这个问题 public void drawSnake(Graphics g) { g.setColor(Color.green); Iterator<Point> iterator = snake.iterator(); while(iterator.hasNext()

这是我的蛇游戏代码中的一个函数。基本上,我最初是在做一个for来遍历
LinkedList
,这就是snake,但是由于它抛出了异常,我认为使用迭代器来更改它会有所帮助。 显然不是。 我怎样才能解决这个问题

public void drawSnake(Graphics g) {
    g.setColor(Color.green);
    Iterator<Point> iterator = snake.iterator();
    while(iterator.hasNext()){
        Point p =iterator.next();
        g.fillRect(p.x * BOX_WIDTH, p.y * BOX_HEIGHT, BOX_WIDTH, BOX_HEIGHT);
    }
    g.setColor(Color.black);
}
public void drawSnake(图g){
g、 setColor(Color.green);
迭代器迭代器=snake.Iterator();
while(iterator.hasNext()){
点p=迭代器.next();
g、 fillRect(p.x*框宽,p.y*框高,框宽,框高);
}
g、 设置颜色(颜色为黑色);
}

通常,当集合在迭代过程中被修改时,会发生此异常。 这很可能意味着另一个线程中正在修改
snake
。这段代码,单独考虑,不应该抛出CME,所以这是剩下的唯一可能的解释

尝试查找
snake
变量的所有用法,并分析它们是否可以与您发布的代码一起使用


另一个非常不同的可能性是
g.fillRect()
方法从
snake
集合中删除
p
。例如,如果您重写了该方法,则可能发生这种情况。

您确定这是引发异常的代码吗?对我来说根本不可能。同意@kviiri,在这个例子中没有修改,所以这不应该引发任何异常。这可能会帮助你@kviiri理解你所说的,因为该函数中没有(至少可见)对snake的修改,但错误指向它:/@Asura14,发布异常的堆栈跟踪后,它可能会有一些有趣的内容。