我目前正在研究多線程遊戲,有一個線程正在運行遊戲更新,一個線程正在重新繪製遊戲正在播放的面板。在編輯了一些代碼後,我們發現我從迭代器遍歷所有實體並更新它們的迭代器中獲得了一個ConcurrentModificationException異常。我孤立的問題,在這裏這個聲明:Rectangle2D#getCenterY導致不相關的迭代器拋出CME
getMyBounds2D().getCenterY();
因爲當我改變了語句:
getMyBounds2D().getY();
唯一的例外是不再更新迭代器拋出。方法getMyBounds2D()只返回一個代表實體邊界框的Rectangle2D,有沒有人可以解釋爲什麼改變上面的語句導致CME以及如何解決這個問題?
你是否在與美國東部時間以外的awt/swing對象搞混了? – jtahlborn
什麼是EDT,是的。 –
EventDispatchThread調用所有偵聽器並執行gui繪製的線程 –