我目前正在开发一款多线程游戏,一个线程运行游戏更新,一个线程重新绘制正在玩游戏的面板。在编辑了一些负责敌人向玩家发射射弹的代码后,我注意到我从迭代器中获得了 ConcurrentModificationException,该迭代器正在迭代所有实体并更新它们。我在这里将问题与此语句隔离:
getMyBounds2D().getCenterY();
因为当我将语句更改为:
getMyBounds2D().getY();
更新迭代器不再抛出异常。getMyBounds2D() 方法只返回一个代表实体边界框的 Rectangle2D,有没有人可以解释为什么更改上面的语句会导致 CME 以及如何解决这个问题?