• fail-fast与fail-safe机制


    ----以下来自网址-----

    http://blog.csdn.net/ch717828/article/details/46892051

    什么是 fail-fast 机制?

    fail-fast机制在遍历一个集合时,当集合结构被修改,会抛出Concurrent Modification Exception。

    fail-fast会在以下两种情况下抛出ConcurrentModificationException

    (1)单线程环境

    集合被创建后,在遍历它的过程中修改了结构。

    (2)多线程环境

    当一个线程在遍历这个集合,而另一个线程对这个集合的结构进行了修改。

    fail-safe机制

    fail-safe任何对集合结构的修改都会在一个复制的集合上进行修改,因此不会抛出ConcurrentModificationException

    fail-safe机制有两个问题

    (1)需要复制集合,产生大量的无效对象,开销大

    (2)无法保证读取的数据是目前原始数据结构中的数据。

    补充:

    --以下来自网址----

    http://blog.csdn.net/chenssy/article/details/38151189

    产生fail-fast的原因:

    有两个线程(线程A,线程B),其中线程A负责遍历list、线程B修改list。线程A在遍历list过程的某个时候(此时expectedModCount = modCount=N),线程启动,同时线程B增加一个元素,这是modCount的值发生改变(modCount + 1 = N + 1)。线程A继续遍历执行next方法时,通告checkForComodification方法发现expectedModCount  = N  ,而modCount = N + 1,两者不等,这时就抛出ConcurrentModificationException 异常,从而产生fail-fast机制。

  • 相关阅读:
    Redis
    CSS为网页添加表格和表单
    JavaScript DOM(1)
    CSS用网页添加列表和超链接
    CSS运用盒子模型划分网页模块
    sizeof(数组)
    mybatis配置
    解决报错 Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
    c# OPC Client 采集kepserver转载
    ngnix开启高可用网关集群好记性不如烂笔头
  • 原文地址:https://www.cnblogs.com/xiaozhijing/p/7884066.html
Copyright © 2020-2023  润新知