java.util.ConcurrentModificationException 解決方法
java.util.ConcurrentModificationException 解決方法
在使用iterator.hasNext()操作迭代器的時候,如果此時迭代的對象發(fā)生改變,比如插入了新數(shù)據(jù),或者有數(shù)據(jù)被刪除。
則使用會報以下異常:
Java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) at java.util.HashMap$KeyIterator.next(HashMap.java:828)
例如以下程序(轉(zhuǎn)自互聯(lián)網(wǎng)):
mport java.util.*; public class Main { public static void main(String args[]) { Main main = new Main(); main.test(); } public void test() { Map bb = new HashMap(); bb.put("1", "wj"); bb.put("2", "ry"); Iterator it = bb.keySet().iterator(); while(it.hasNext()) { Object ele = it.next(); bb.remove(ele); //wrong } System.out.println("Success!"); } }
原因:Iterator做遍歷的時候,HashMap被修改(bb.remove(ele), size-1),Iterator(Object ele=it.next())會檢查HashMap的size,size發(fā)生變化,拋出錯誤ConcurrentModificationException。
解決辦法:
1) 通過Iterator修改Hashtable
while(it.hasNext()) { Object ele = it.next(); it.remove(); }
2) 根據(jù)實際程序,您自己手動給Iterator遍歷的那段程序加鎖,給修改HashMap的那段程序加鎖。
3) 使用“ConcurrentHashMap”替換HashMap,ConcurrentHashMap會自己檢查修改操作,對其加鎖,也可針對插入操作。
import java.util.concurrent.*;
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- Java ConcurrentModificationException異常解決案例詳解
- 詳解Java刪除Map中元素java.util.ConcurrentModificationException”異常解決
- Java源碼解析ArrayList及ConcurrentModificationException
- 出現(xiàn)java.util.ConcurrentModificationException 問題及解決辦法
- java 集合并發(fā)操作出現(xiàn)的異常ConcurrentModificationException
- Java?報錯?java.util.ConcurrentModificationException:?null?的原因及解決方案
相關(guān)文章
OpenStack Heat AutoScaling詳解及實例代碼
這篇文章主要介紹了OpenStack Heat AutoScaling詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下2016-12-12OpenStack云計算快速入門教程(1)之OpenStack及其構(gòu)成簡介
該教程基于Ubuntu12.04版,它將幫助讀者建立起一份OpenStack最小化安裝。這篇文章主要介紹了OpenStack云計算快速入門教程(1)之OpenStack及其構(gòu)成簡介 ,需要的朋友可以參考下2016-11-11Centos7環(huán)境準備openstack pike的安裝
本篇文章主要介紹了Centos7環(huán)境準備openstack pike的安裝,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03openstack云計算組件keystone部署及操作使用技巧
這篇文章主要為大家介紹了openstack云計算組件keystone部署及操作使用技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04CentOS7.2部署OpenStack(一)—環(huán)境準備
這篇文章主要介紹了CentOS7.2部署OpenStack(一)—環(huán)境準備,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12CentOS系統(tǒng)中一鍵安裝Openstack圖文教程
最近在學習Openstack,一直想試試安裝一下,可是參考了很多資料,并不如人意。由于一直用的Linux版本為CentOS,大部分Openstack安裝都要求在Ubuntu上進行。本文介紹的是在CentOS系統(tǒng)中一鍵安裝Openstack的方法,有需要的朋友們可以參考學習,下面來一起看看吧。2016-10-10OpenStack手動分布式部署Keystone(Queens版)
這篇文章主要介紹了OpenStack手動分布式部署Keystone(Queens版),Keystone是OpenStack框架中負責管理身份驗證服務(wù)訪問規(guī)則和服務(wù)令牌功能的組件,需要的朋友可以參考下2023-03-03淺談openstack中使用linux_bridge實現(xiàn)vxlan網(wǎng)絡(luò)
這篇文章主要介紹了淺談openstack中使用linux_bridge實現(xiàn)vxlan網(wǎng)絡(luò),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03openstack云計算cinder架構(gòu)及各組件功能介紹
這篇文章主要為大家介紹了openstack云計算之cinder架構(gòu)及各組件功能介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04