현재 멀티 스레드 게임을하고 있습니다. 게임에 대한 업데이트를 실행하는 스레드와 게임이 진행되는 패널을 다시 그리는 스레드가 있습니다. 플레이어에서 발사하는 발사체를 담당하는 일부 코드를 편집 한 후에 모든 엔티티를 반복하고 업데이트하는 Iterator에서 ConcurrentModificationException이 발생한다는 것을 알았습니다.Rectangle2D # getCenterY는 관련없는 반복자로 하여금 CME를 던졌습니다.
getMyBounds2D().getY();
예외가 더 이상 업데이트 반복자에서 발생합니다 : 나는 문을 변경하는 경우 때문에
getMyBounds2D().getCenterY();
: 여기이 문에 문제를 격리합니다. getMyBounds2D() 메서드는 엔티티의 경계 상자를 나타내는 Rectangle2D를 반환합니다. 위의 문을 변경하면 왜 CME가 발생하고이 문제를 해결할 수 있는지 설명 할 수있는 사람이 있습니까?
EDT 외부에서 awt/swing 오브젝트를 망치고 있습니까? – jtahlborn
EDT는 무엇이며 그렇습니다. –
EventDispatchThread 모든 리스너를 호출하고 gui의 페인팅을 수행하는 스레드 –