java.util.ConcurrentModificationException 解决办法
在使用iterator.hasNext()操作迭代器的時候,如果此時迭代的對象發生改變,比如插入了新數據,或者有數據被刪除。
則使用會報以下異常:
Java.util.ConcurrentModificationException
??????? at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
??????? at java.util.HashMap$KeyIterator.next(HashMap.java:828)
例如以下程序(轉自互聯網):
[java]?view plaincopy原因:Iterator做遍歷的時候,HashMap被修改(bb.remove(ele), size-1),Iterator(Object ele=it.next())會檢查HashMap的size,size發生變化,拋出錯誤ConcurrentModificationException。
解決辦法:
1) 通過Iterator修改Hashtable
while(it.hasNext()) {
Object ele = it.next();
??????????? it.remove();
}
2) 根據實際程序,您自己手動給Iterator遍歷的那段程序加鎖,給修改HashMap的那段程序加鎖。
3) 使用“ConcurrentHashMap”替換HashMap,ConcurrentHashMap會自己檢查修改操作,對其加鎖,也可針對插入操作。
import java.util.concurrent.*;
轉載于:https://www.cnblogs.com/llhl/p/9648676.html
總結
以上是生活随笔為你收集整理的java.util.ConcurrentModificationException 解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Bootstrap-插件使用】Jcro
- 下一篇: 初始angular框架(1)