• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > java.util.ConcurrentModificationException 解决方法

java.util.ConcurrentModificationException 解决方法

作者: 字体:[增加 减小] 来源:互联网

本文主要包含java.util.ConcurrentModificationException,问题,java.util错误解决方法等服务器相关知识,希望可以进行参考

 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日期格式工具类DateUtil.java
  • java.util.concurrent.ExecutionException 问题解决方法
  • Java常用正则表达式验证工具类RegexUtils.java
  • 浅谈java中Math.random()与java.util.random()的区别
  • java.util.ArrayDeque类使用方法详解
  • 简析Java中的util.concurrent.Future接口
  • java.util.Date与java.sql.Date的区别
  • Java中StringUtils工具类的一些用法实例
  • 深入Synchronized和java.util.concurrent.locks.Lock的区别详解
  • 在JSTL EL中处理java.util.Map,及嵌套List的情况
  • 出现java.util.ConcurrentModificationException 问题及解决办法
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • java.util.ConcurrentModificationException 解决方法

相关文章

  • 在Docker容器中部署静态网页的方法教程
  • 详解Docker Volume 之权限管理
  • Centos7下安装与卸载docker应用容器引擎的方法
  • Docker搭建简单的应用栈与容器Hello World访问详解
  • 如何利用Docker容器实现代理转发与数据备份详解
  • Docker 镜像和容器的区别详解
  • Centos7下安装Docker Engine
  • 创建Web项目的Docker镜像实例讲解
  • Docker 中快速安装tensorflow环境的方法步骤
  • VMWare12 下Ubuntu虚拟机没法通过长按方向键连续移动光标的解决办法

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 详解如何利用docker快速构建MySQL主从复制环境
    • docker如何快速搭建几个常用的第三方服务详解
    • Ubuntu 18.04 LTS安装KVM虚拟机的方法步骤
    • Docker 清理命令集锦
    • 211高校利用红帽虚拟化方案 高效地集成IT系统
    • 浅谈Docker 客户端和守护进程
    • mac 中docker安装mysql的图文教程
    • 解决VMware仅主机模式虚拟机无法ping通物理机问题
    • Docker实践—CentOS7上部署Kubernetes详解
    • Docker 技巧之删除Docker容器和镜像

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有