什么是ConcurrentModificationException?在哪些场景下会报该异常?

ConcurrentModificationException是由于Java集合的快失败机制引发的,当在迭代过程中尝试修改集合时抛出。文章通过实例解释了异常的触发原因,并提供了避免该异常的策略,包括使用迭代器的remove方法和避免在迭代时改变集合结构,特别是在多线程环境中。
摘要由CSDN通过智能技术生成

ConcurrentModificationException是基于java集合中的 快速失败(fail-fast) 机制产生的,在使用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了增删改,就会抛出该异常。
快速失败机制使得java的集合类不能在多线程下并发修改,也不能在迭代过程中被修改。

抛异常实例

使用迭代器遍历list,同时使用list.remove方法删除元素,会抛ConcurrentModificationException异常:

public void tryRemove(List<String> strings) {
   
    Iterator<String> it = strings.iterator();
    while(it.hasNext()) {
   
        String str = it.next();
        if(str.equals("remove") {
   
            strings.remove(str);
        }
    }
}
抛异常的原因

抛异常是在next方法中,该方法共有两处抛异常,上面的实例中,是在next方法的第一处抛的异常。

public E next() {
   
    if (modCount 
  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值