美文网首页
Fail-Fast:Java集合错误检测机制

Fail-Fast:Java集合错误检测机制

作者: 雯艺雪 | 来源:发表于2019-04-18 09:38 被阅读0次

    一、简介
    fail-fast,即快速失败,Java集合的一种错误检测机制。当多个线程对集合(非fail-fast的集合类)进行结构上的改变的操作时有可能会抛出ConcurrentModificationException(当方法检测到对象的并发修改,但不允许这种修改,单线程也会)

    二、示例
    在Foreach循环中删除元素时发生该错误。
    原因

    集合中的modCount与集合的iterator中的expectedModCount不相等。
    当一次集合中的元素时modCount值改变但是expectedModCount的值没更新。
    (foreach循环实际上在编译时会被转换成为while和iterator的操作)

    解决方法
    1、直接使用普通的for循环:没有遇到iterator的遍历,不执行fail-fast
    的检验
    2、使用Iterator进行操作:更新集合中的modCount的同时又更新了iterator的expectedModCount的值。
    3、使用java8中提供的filter过滤

    相关文章

      网友评论

          本文标题:Fail-Fast:Java集合错误检测机制

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