我有一個試圖迭代(使用迭代器)的對象LinkedList,看看它們是否有任何衝突,如果是的話,從列表中刪除它。但是,我正在得到一個併發修改異常。我把它放在一個synchronized塊,我也想在一個try catch塊捕獲錯誤,既不似乎在所有幫助,代碼是在這裏:同步後Java併發修改異常
private void updateTP() {
synchronized (toiletpaper) {
Iterator<ToiletPaper> iter = toiletpaper.iterator();
while (iter.hasNext()) {
ToiletPaper tp = iter.next();
tp.update(1000, 700);
if (toilet.overlaps(tp)) {
System.out.println("tp splash!");
toiletpaper.remove(tp);
menu.removeLife();
}
}
}
}
對這個問題的任何想法,將不勝感激,我看過這裏和谷歌,他們都說要麼抓住例外或同步它,這似乎不工作,所以...請幫助。
+1 - 和(至少在這種情況下)它與'synchronized'無關。這是一個不好的例外;它更像是一種「帶外修改」。 –
這一切都很好,說這是命名不佳,但我還沒有看到一個替代名稱,我們毫不含糊地更好。 (而且讓人困惑的原因是「併發」有兩個不同的含義......「同時發生」和「涉及多重控制線程」。) –