私は現在、マルチスレッドのゲームに取り組んでいます。ゲームの更新を実行するスレッドが 1 つと、ゲームがプレイされているパネルを再描画するスレッドが 1 つあります。敵がプレイヤーに発射物を発射する原因となったコードを編集した後、すべてのエンティティを反復処理して更新している Iterator から ConcurrentModificationException を取得していることに気付きました。ここで、このステートメントに問題を切り分けました。
getMyBounds2D().getCenterY();
ステートメントを次のように変更すると、
getMyBounds2D().getY();
例外は、更新中の Iterator からスローされなくなりました。メソッド getMyBounds2D() は、エンティティの境界ボックスを表す Rectangle2D を返すだけです。上記のステートメントを変更すると CME が発生する理由と、この問題を修正する方法を説明できる人はいますか?