异常:java.util.ConcurrentModificationException

Axis1.4 ConcurrentModificationException异常问题解决 编译以下代码,替换axis.jar包里面的class文件即可,主要修改内容是527行,遍历集合排序导致多线程并发问题。axis1.4多线程并发调用发生异常。 阅读详情
重现异常: 
import java.util.ArrayList;
import java.util.Iterator;

class User {
    private String userName, password;
    private int ID;

    User(int p_ID, String p_userName, String p_password) {
        ID = p_ID;
        userName = p_userName;
        password = p_password;
    }
}

public class Test {
    static ArrayList al = new ArrayList();

    public static void main(String[] args) {
        add();
        clear();
    }

    public static void add() {
        for (int i = 0; i < 5; i++) {
            al.add(new User(i, "userName", "password"));
        }
    }

    public static void clear() {
        Iterator it = ((ArrayList) al).iterator();
        while (it.hasNext()) {
            User usr = (User) (it.next());
            int index = al.indexOf(usr);
            al.remove(index);
            // it.remove();
        }
        System.out.println("Cleard");
    }
}

注意到上面代码中注释部分的上面2句,那就是异常出现的根源,我从ArrayList的一个对象al中移去了项目,然而Iterator对象it并不知道al中已经发生了变化,所以再继续遍历的时候会发生错误。正确的写法应该如注释行所示,然后注释行去掉上面的2行。


在Map或者Collection的时候,不要用它们的API直接修改集合的内容,如果要修改可以用Iterator的remove()方法,例如:

    public void setReparation( Reparation reparation ) {
        for (Iterator it = this.reparations.iterator();it.hasNext();){    //reparations为Collection
            Reparation repa = (Reparation)it.next();
            if (repa.getId() == reparation.getId()){
                this.reparations.remove(repa);
                this.reparations.add(reparation);
            }
        }
   }

如上写会在运行期报ConcurrentModificationException,可以如下修改:

    public void setReparation( Reparation reparation ) {
        boolean flag = false;
        for (Iterator it = this.reparations.iterator();it.hasNext();){    //reparations为Collection
            Reparation repa = (Reparation)it.next();
            if (repa.getId() == reparation.getId()){
                it.remove();
                flag = true;
                break;
            }
        }
        if(flag){
          this.reparations.add(reparation);
        }
    }

出现java.util.ConcurrentModificationException 问题及解决办法 主要介绍了出现java.util.ConcurrentModificationException 问题及解决办法的相关资料,需要的朋友可以参考下 立即下载

相关推荐

java.util.ConcurrentModificationException 解决方法

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) 例如以下程序(转

axis1.4 java_java axis1.4

转载http://blog.csdn.net/songdexv/article/details/7827289 最近需要使用axis根据wsdl文件生成客户端代码,由于axis不像axis2中有WDSL2Java这个脚本,而且在使用axis中的WDSL2Java类时,碰到了一些问题,主要就是类路径的问题,按照网上说的使用java 命令来运行,但是总是报错说WDSL2Java类找不到,后面发现如果...

weixin_27127993的博客 599

最新虚拟串口 Virtual Serial Port Driver V11.0.1068 已经汉化

Virtual Serial Port Driver 11.0.1047 是一款功能强大的虚拟串口驱动程序,专为需要在开发和测试环境中模拟物理串口连接的用户设计。该版本于2023年4月5日发布,主要修复了在导入无效的COM端口捆绑设置时导致的崩溃问题,并优化了软件的自动更新功能。通过使用Virtual Serial Port Driver,用户可以在不依赖物理硬件的情况下,轻松创建和管理虚拟串口,极大地提高了开发和测试的效率。

中游鱼的博客 3万+

JDK1.8版本不兼容问题

这是因为服务器网址中的参数对不上,需要更改 Server URL 改成阿里云的参数。然后就可以在Java版本中找到JDK1.8相对应的版本java8。2.当创建该新建项目的时候会会报一个版本不兼容问题。然后就可以正常的创建新的项目了。

Chu726848870的博客 663

Visual Studio 6.0 镜像下载全指南:从企业版到中文版

本文提供Visual Studio 6.0企业版和中文版的镜像下载全指南,包括详细版本解析、已验证的下载链接及校验信息。针对现代系统的安装技巧和兼容性处理方案,帮助开发者高效获取并运行这一经典开发工具,特别适合维护遗留系统的专业人员。

weixin_33712987的博客 1068

【附源码】Node.js毕业设计高校院级校友信息管理系统(Express)

首先,该系统可以提高高校对校友信息管理的效率和准确性。通过系统提供的查询功能,高校可以方便地获取校友的最新联系方式和动态,及时了解校友的发展情况,为校友提供更好的服务和支持。总之,开发高校院级校友信息管理系统将为高校提供一个高效、便捷的工具,有助于提升校友管理水平和服务质量,促进高校与校友之间的良好互动关系。通过使用前端技术HTML、CSS、JavaScript和Vue框架,结合后端技术Node.js和Express框架,以及MySQL数据库,可以实现对校友信息的快速录入、查询、修改和删除等操作。

佳愉毕设源码 894

java.util.ConcurrentModificationException异常

这是一次异常,在for循环中新加了一大堆代码结果调试报异常 debug的方法,对新加的代码选择性的注释掉些代码,再次运行,然后还是报错,再注释,再报错,再注释,再报错。一步步的缩写范围,终于注释掉下面这条代码,好了! 为什么会这样?我们看看sort()方法: 看到迭代器的操作,估计是这里的问题了。具体参考:java.util.ConcurrentModificationExcept...

猪猪 352

【Python】torch_npu

Ascend AI处理器核心计算范式与PyTorch的桥接艺术:深入探索torch_npu的基石要真正理解,我们必须首先超越其作为PyTorch后端库的表面认知,深入其所服务的硬件——华为昇腾(Ascend)AI处理器的核心计算范式。这不仅仅是关于如何在NPU上运行PyTorch模型,更是关于NPU如何设计其计算,以及如何巧妙地将这种硬件特性映射到PyTorch的抽象层之上。1. 昇腾AI处理器的达芬奇架构:极致算力的源泉昇腾AI处理器并非传统的CPU或GPU。它采用了华为独创的达芬奇(Da Vinci)架

宅男很神经 5372

java.util.ConcurrentModificationException异常原因及解决方法

通过错误提示,知道了异常出现在checkForComodification这个方法上,异常原因是modCount!在网上查询得知,在很多容器中,都有一个变量记录你从结构上修改此容器的次数,叫做modCount,查看ArrayList的add()和remove()方法就可以发现,每次你调用add方法()向容器里面增加了一个元素,或者你调用Remove()方法删除了其中的某个元素,这个值都会增加1。

LYQ 6719

Android 音频源码分析——AudioTrack设备选择

Android 音频源码分析——AndroidRecord录音(一) Android 音频源码分析——AndroidRecord录音(二) Android 音频源码分析——AndroidRecord音频数据传输流程 Android 音频源码分析——audioserver启动 Android 音频源码分析——AudioFlinger Android 音频源码分析——AudioTrack设备选择 基于Andorid9.0源码 以AudioTrack为例,梳理下输出设备选择流程。 音频设备选择的影响因素: Au

奋斗的菜鸟ing 3972

物联网通信中NB-IoT、Cat.1、LTE-M该如何选择?

首先我们要确定我们产品的关键需求,例如:我们的设备是否对数据传输速率有较高的要求,有较高要求我们就需要选择较高传输速率的Cat.1来开发我们的产品。同时关于产品性能方面,我们对功耗、延迟、可靠性也会有所要求,例如我们的产品为移动端产品,不方便布线以及安装电源,那我们就会采用电池供电的方式,所以在选择时可以优先考虑低功耗产品,最终结合其他需求选择出合适的协议。首先,我们需求的产品是不同的,我们需要根据产品需求或项目需求来进行选择,NB-IoT、Cat.1、Cat.M都有属于自己的优势。

a1809032425的博客 1216

Java异常:Java.util.ConcurrentModificationException异常处理

在开发中使用了迭代器对 List 进行遍历,遇到了java.util.ConcurrentModificationException报错,本文记录了这个错误出现的原因和如何解决。

qq_46119575的博客 1万+

(四)美赛画图篇:画图模板+画图工具

美赛画图篇:画图模板+画图工具(一)画图模板(二)画图工具 因为散点图、折线图等多与数据有关,且需相关软件生成,故此处多是通用模板。直接替换文字内容即可。 (一)画图模板 1、Visio圆圈图 适合于:指标体系(E题常用) 点击下载:1 C币 如果不想花费且时间充足,悄咪咪地说,在visio-模板搜索可以找到很多。(稍微会耗一点时间) 2、简单指标体系图PPT 适合于指标体系 点击下载:0 C币...

weixin_43689393的博客 1万+

解决:java.util.ConcurrentModificationException: null:异常

public class Test { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("aa"); list.add("bb"); list.add("cc"); ...

云大牛的博客 4万+

uni-app开发-第6篇:uni-app 样式与主题

在 uni-app 开发中,样式与主题的管理是关键部分。样式分为全局样式和局部样式,全局样式在 App.vue 中定义,适用于整个应用,而局部样式在单个 .vue 文件中定义,仅对当前页面生效。局部样式优先级高于全局样式,内联样式优先级最高。样式属性如 font-family 和 color 可被子元素继承。要覆盖全局样式,可在局部样式中重新定义相同规则。主题切换通过 CSS 变量和类名实现,动态切换主题可通过修改元素的类名来完成。例如,定义浅色和深色主题,并通过按钮点击切换主题样式。这些方法帮助开发者灵活

无 370

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java.util.ConcurrentModificationException: null异常

问题: 在Java中对集合使用增强for循环时,一旦对集合进行增删操作,在遍历时会引起java.util.ConcurrentModificationException: null异常。 原因: 在官方文档中ConcurrentModificationException的介绍如下: public class ConcurrentModificationException extends RuntimeException 某个线程在 Collection 上进行遍历时,通常不允许其他线程修改该 Co

jl08133341的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Kotlin/Java HashMap异常:java.util.ConcurrentModificationException

Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。线程的锁申请操作是阻塞的,于是造成线程T_A和线程T_B无法正确获得想要的锁,两个线程被阻塞进入死锁状态。Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。此方法返回一个线程容量为n的线程池。读时候快,写/删/改慢。

Zhang Phil 1297

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hashMap异常:java.util.ConcurrentModificationException

java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(HashMap.java:1442) at java.util.HashMap$KeyIterator.next(HashMap.java:1466) at com.rjj.demo.test.T...

weixin_33989780的博客 1076

Android并发修改异常:java.util.ConcurrentModificationException

Android并发修改异常:java.util.ConcurrentModificationException 1.异常原因: 网上很多出现并发修改异常的情况都是和集合有关,而我的情况是在将Activity清除出栈的时候出现的异常,其他的情况暂未遇到,碰到再更新。 2.分析解决: 我在之前的《如何在本Activity页面退出后回到首页或者指定的Activity入口》中提到会出现并发修改异常的情况:我从A 主页--> B--> C--> D 页面,当想结束当前页面,直接回到A页面时...

凌燕的专栏 865

解决java.util.ConcurrentModificationException: null并发修改异常

遇到并发修改异常,怎么办???来,教你快速解决!

每天进步一点点 1万+

Caused by: java.util.ConcurrentModificationException并发修改异常

org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.util.ConcurrentModificationException ### The error may exist in com/mybatis/mapper/UserMapper.xml ### The ...

xiaoxiamiqianqian的博客 2722

java.util.ConcurrentModificationException: null异常信息

java.util.ConcurrentModificationException: null 原因自己注入属性搞错了,让商品的集合 没有拿到值 给前台 java.util.ConcurrentModificationException: null at java.util.ArrayList$Itr.checkForComodification(Unknown Source) ~[na:1.8.0_131] at java.util.ArrayList$Itr.next(Unknown Sour

汤圆的博客 2754
上一篇: Hibernate: No row with the given identifier exists
下一篇: [DEBUG]java.util.ConcurrentModificationException
ilusm
博客等级 码龄20年 8粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值