出现java.util.ConcurrentModificationException 问题及解决办法

发布时间 - 2026-01-10 23:02:15    点击率:

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)

例如以下程序(转自互联网):

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发生变化,抛出错误ConcurrentModificationException。

解决办法:

1) 通过Iterator修改Hashtable

while(it.hasNext()) {
Object ele = it.next();
      it.remove();
}

2) 根据实际程序,您自己手动给Iterator遍历的那段程序加锁,给修改HashMap的那段程序加锁。

3) 使用“ConcurrentHashMap”替换HashMap,ConcurrentHashMap会自己检查修改操作,对其加锁,也可针对插入操作。

import java.util.concurrent.*;

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java.util.ConcurrentModificationException  # 问题  # java.util出现错误  # ConcurrentModificationException  # Java ConcurrentModificationException异常解决案例详解  # 详解Java删除Map中元素java.util.ConcurrentModificationExce  # Java源码解析ArrayList及ConcurrentModificationException  # java.util.ConcurrentModificationException 解决方法  # java 集合并发操作出现的异常ConcurrentModificationException  # Java 报错 java.util.ConcurrentModificationException:  # 加锁  # 遍历  # 那段  # 会报  # 解决办法  # 迭代  # 互联网  # 也可  # 对其  # 希望能  # 谢谢大家  # 转自  # 抛出  # KeyIterator  # HashIterator  # nextEntry  # mport  # public  # Main  # strong 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 原生JS实现图片轮播切换效果  如何自定义建站之星网站的导航菜单样式?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  教学论文网站制作软件有哪些,写论文用什么软件 ?  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何在橙子建站上传落地页?操作指南详解  如何快速选择适合个人网站的云服务器配置?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  香港服务器如何优化才能显著提升网站加载速度?  Laravel如何实现API版本控制_Laravel版本化API设计方案  Python数据仓库与ETL构建实战_Airflow调度流程详解  详解vue.js组件化开发实践  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  如何在不使用负向后查找的情况下匹配特定条件前的换行符  java ZXing生成二维码及条码实例分享  如何续费美橙建站之星域名及服务?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  JavaScript中的标签模板是什么_它如何扩展字符串功能  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  如何利用DOS批处理实现定时关机操作详解  如何快速重置建站主机并恢复默认配置?  如何确认建站备案号应放置的具体位置?  焦点电影公司作品,电影焦点结局是什么?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  浅谈javascript alert和confirm的美化  Laravel如何实现一对一模型关联?(Eloquent示例)  微信小程序 canvas开发实例及注意事项  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  nginx修改上传文件大小限制的方法  如何获取上海专业网站定制建站电话?  网站制作壁纸教程视频,电脑壁纸网站?  iOS验证手机号的正则表达式  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  详解Android图表 MPAndroidChart折线图  Android仿QQ列表左滑删除操作  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Python自动化办公教程_ExcelWordPDF批量处理案例  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Laravel如何使用Passport实现OAuth2?(完整配置步骤)