欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

出現(xiàn)java.util.ConcurrentModificationException 問題及解決辦法

 更新時(shí)間:2017年02月14日 10:12:15   作者:dns007  
這篇文章主要介紹了出現(xiàn)java.util.ConcurrentModificationException 問題及解決辦法的相關(guān)資料,需要的朋友可以參考下

java.util.ConcurrentModificationException 解決辦法

前言:

在使用iterator.hasNext()操作迭代器的時(shí)候,如果此時(shí)迭代的對象發(fā)生改變,比如插入了新數(shù)據(jù),或者有數(shù)據(jù)被刪除。

則使用會報(bào)以下異常:

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做遍歷的時(shí)候,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ù)實(shí)際程序,您自己手動給Iterator遍歷的那段程序加鎖,給修改HashMap的那段程序加鎖。

3) 使用“ConcurrentHashMap”替換HashMap,ConcurrentHashMap會自己檢查修改操作,對其加鎖,也可針對插入操作。

import java.util.concurrent.*;

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • java中的前++和后++的區(qū)別示例代碼詳解

    java中的前++和后++的區(qū)別示例代碼詳解

    這篇文章主要介紹了java中的前++和后++的區(qū)別示例代碼詳解,其實(shí)大家只要記住一句話就可以了,前++是先自加再使用而后++是先使用再自加,本文通過代碼給大家詳細(xì)解說,感興趣的朋友跟隨小編一起看看吧
    2020-06-06
  • 如何測試Java類的線程安全性

    如何測試Java類的線程安全性

    這篇文章主要介紹了如何測試Java類的線程安全性,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • java中Websocket的使用方法例子

    java中Websocket的使用方法例子

    這篇文章主要給大家介紹了關(guān)于java中Websocket的使用方法,WebSocket是HTML5開始提供的一種在瀏覽器和服務(wù)器間進(jìn)行全雙工通信的協(xié)議,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • log4j2 自動刪除過期日志文件的配置及實(shí)現(xiàn)原理

    log4j2 自動刪除過期日志文件的配置及實(shí)現(xiàn)原理

    這篇文章主要介紹了log4j2 自動刪除過期日志文件配置及實(shí)現(xiàn)原理解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • java Thread 多線程

    java Thread 多線程

    本篇文章小編為大家介紹,java Thread 多線程。需要的朋友參考下
    2013-04-04
  • java常用工具類 UUID、Map工具類

    java常用工具類 UUID、Map工具類

    這篇文章主要為大家詳細(xì)介紹了Java常用工具類,包括UUID工具類、Map工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Java去重排序之Comparable與Comparator的使用及說明

    Java去重排序之Comparable與Comparator的使用及說明

    這篇文章主要介紹了Java去重排序之Comparable與Comparator的使用及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java中的@Builder注解問題詳解

    Java中的@Builder注解問題詳解

    這篇文章主要介紹了Java中的@Builder注解詳解,@Builder 注解的其中一個大坑會導(dǎo)致默認(rèn)值失效,這是使用此注解出現(xiàn)的一個問題,總的來說,不推薦再使用 @Builder 注解,接下來講重點(diǎn)介紹其原因和替代方案,需要的朋友可以參考下
    2023-10-10
  • Spark調(diào)優(yōu)多線程并行處理任務(wù)實(shí)現(xiàn)方式

    Spark調(diào)優(yōu)多線程并行處理任務(wù)實(shí)現(xiàn)方式

    這篇文章主要介紹了Spark調(diào)優(yōu)多線程并行處理任務(wù)實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • springboot整合quartz實(shí)現(xiàn)定時(shí)任務(wù)示例

    springboot整合quartz實(shí)現(xiàn)定時(shí)任務(wù)示例

    spring支持多種定時(shí)任務(wù)的實(shí)現(xiàn)。我們來介紹下使用spring的定時(shí)器和使用quartz定時(shí)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04

最新評論