美文网首页
ConcurentModificationException异常

ConcurentModificationException异常

作者: alexwu59 | 来源:发表于2018-06-25 11:02 被阅读0次

有时候在操作JAVA集合类的比如ArrayList的时候,会抛出ConcurentModificationException,下面就介绍一下什么时候会抛出ConcurentModificationException什么不会。


单线程:

单线程:第一种遍历会出现ConcurrentModificationException异常,第二种不会。

原因:第一种遍历的时候:当在循环中删掉一个元素的时候,modCount加1

modCount初始值为0。

foreach循环,在获取下个元素的时候,调用的是Itr的next方法:

在next方法中,执行checkForComodification()

int expectedModCount 值在初始的时候与modCount相等,当list改变的时候modCount发生了变化,而expectedModCount没有改变,因此会抛出异常。

第二种遍历,直接读取list内部的数组,因此没有抛出异常。

如果单线程采用:

也不会抛出异常,因为删除是调用的:

这个remove方法,在执行完成后会执行expectedModCount=modCount,这样在后面的遍历的时候,执行next方法的时候,就不会抛出异常了。

多线程:如果采用

也不会抛出异常。

但是如果采用下面任何一种,都会抛出异常:

因为next方法不是同步方法。

相关文章

  • ConcurentModificationException异常

    有时候在操作JAVA集合类的比如ArrayList的时候,会抛出ConcurentModificationExce...

  • 异常和模块

    异常 目标 了解异常 捕获异常 异常的else 异常finally 异常的传递 自定义异常 一. 了解异常 当检测...

  • python多线程

    异常基础知识 -异常简介: 运行时错误 -异常类: 异常数据 异常名称,异常数据,异常类型 -自定义异常 clas...

  • dart 异常

    dart中的异常 异常处理 抛出异常 异常捕获

  • Java基础之异常

    Java基础之异常 目录 异常简单介绍 ThrowableErrorException 异常分类 如何处理异常异常...

  • python核心编程-错误与异常

    本章主题:什么是异常Python中的异常探测和处理异常上下文管理引发异常断言标准异常创建异常相关模块 什么是异常 ...

  • motan(RPC)系统梳理知识点

    异常分类: 业务异常(bizException) 服务异常(serviceException) 框架异常(fram...

  • 异常

    Java异常体系 异常的分类 Java的异常分为两大类:Checked异常和Runtime异常(运行时异常)。所有...

  • 从零构架个人博客网站(二)-全局异常处理

    中间件的异常 全局异常中间件全局异常监听定义异常的返回结果定义常见的异常状态开发环境 异常查看 对于异常,我们可以...

  • Node.js异常处理

    Node.js异常分类: 变量异常 函数异常 调用异常 变量异常 未定义变量 未包含对象 变量类型错误 函数异常 ...

网友评论

      本文标题:ConcurentModificationException异常

      本文链接:https://www.haomeiwen.com/subject/gzgeyftx.html