java.util.ConcurrentModificationException

撰寫多線程代碼時,你遇到過多少次下面的提示:
Exception in thread "main" java.util.ConcurrentModificationException  
 

這個異常產生的原因有幾個。一是遍歷時直接對集合調用刪除操作而不是在枚舉器上。二是不同的線程試圖對集合進行增刪操作的時候。

下面的代碼則會拋出該異常:

for (String s : map.keySet()) {
      if ("val".equals(s))
         map.remove(s);
 }


正確的方法應該這樣:

  Iterator it = map.keySet().iterator();
  while (it.hasNext()) {
      String obj = it.next();
      if ("2".equals(obj)) {
          it.remove();
      }
 }


 

發佈了35 篇原創文章 · 獲贊 5 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章