簡體   English   中英

拋出java.util.ConcurrentModificationException

[英]Throws java.util.ConcurrentModificationException

所以這是我的蛇游戲代碼的功能。 基本上我最初做的是通過LinkedList<Point>來獲取蛇但是因為它拋出了異常,我認為使用迭代器更改它會有所幫助。 顯然不是。 我怎樣才能解決這個問題?

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);
}

通常,在迭代迭代時修改集合時會發生此異常。 很可能這意味着在另一個線程中修改了snake 這個代碼是獨立考慮的,不應該拋出CME,所以這是剩下的唯一可能的解釋。

嘗試查找snake變量的所有用法,並分析它們是否可以與您發布的代碼一起完成。

另一個非常非常不同的可能性是g.fillRect()方法從snake集合中刪除p 例如,如果您覆蓋了該方法,則可以進行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM