fail-fast 和 fail-safe 的区别

从字面意思来看 fail-fast 是快速失败,fail-safe 是安全失败,这都是集合类对于并发读写时的一种应对机制。

  • fail-fast,广泛应用于 java.util 下的集合类中,其机制为在使用迭代器遍历的过程中,如果此时集合对象的结构被改变(即插入、删除元素时, modCount 的值发生变化。替换元素的值不会发生改变)后,会抛出 ConcurrentModificationException (并发修改异常)的异常。这是一种不支持并发读写的机制,优点是不会在遍历时额外消耗资源;且保证读到的数据时最新的数据。
  • fail-safe,广泛应用于 java.concurrent 下的集合类中,其机制为在使用迭代器遍历时,会创建一个此时集合的视图来供遍历,而不是在源数据上进行遍历,所以在遍历时如果集合对象的结构被改变,不会抛出异常。这是一种支持并发读写的机制,缺点是每次遍历时都会创建视图,会消耗更多的资源;且很有可能读不到最新的值。

Fail-fast 和 Fail-safe 机制相关推荐

  1. 什么是Fail Fast和Fail Safe?

    这里是目录标题 1. Fail Fast a. 概念 b. 原理 c. 关注点 d. 注意 2. Fail Safe a. 概念 b. 原理 3. Fail Fast 和 Fail Safe的区别 1 ...

  2. Fail Fast与Fail Safe的区别

    Fail Fast Fail Fast Iterator在遍历集合时,若该集合发生了结构性的改变,则将抛出 ConcurrentModification 异常.例如: Map<String, S ...

  3. Java - Java集合中的安全失败Fail Safe机制 (CopyOnWriteArrayList)

    文章目录 Pre 概述 fail-safe的容器-CopyOnWriteArrayList add remove函数 例子 缺陷 使用场景 Pre Java - Java集合中的快速失败Fail Fa ...

  4. Java - Java集合中的快速失败Fail Fast 机制

    文章目录 什么是 fail-fast 源码解读 Itr 为什么对集合的结构进行修改会发生并发修改异常-源码分析 修改方法之 remove 修改方法之 add 案例分享 [案例一] [案例二] [案例三 ...

  5. 聊聊hikari与tomcat jdbc pool的fail fast

    序 本文主要研究在中途数据库挂的情况下,hikari与tomcat jdbc pool的fail fast情况. 实验代码 @Testpublic void testDatabaseDownAndUp ...

  6. 【转载】ArrayList 中数据删除 fail fast

    2019独角兽企业重金招聘Python工程师标准>>> 本文转载自http://shift-alt-ctrl.iteye.com/blog/1839147 在循环arrayLlist ...

  7. 【springcloud问题】Could not locate PropertySource and the fail fast property is set, failing

    问题描述:使用springcloud的本地配置中心时出现:Could not locate PropertySource and the fail fast property is set, fail ...

  8. redis集群节点宕机 fail状态 redis的投票机制实测

    redis集群节点宕机 fail状态 redis的投票机制实测  redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的r ...

  9. 【android录屏填坑】录屏报错start fail,stop fail

    先写个标题,有时间了填充内容. 时隔N天,终于忙完了.内容填充中-- 前言 为什么要写这么一篇文章.因为我最近做录屏实在是被坑哭了.不是遇到start fail报错,就是遇到stop fail报错,这 ...

  10. Fail - Fast机制

    平常在使用集合的时候肯定会遇到过遍历删除集合中的某些元素,哪么在进行操作的时候大家有 没有遇到过什么问题呢?最近在使用集合进行遍历删除元素的时候,我就碰到了这个异常:java.util.Concurr ...

最新文章

  1. 关于机器学习模型的可解释性算法!
  2. 【翻译】SQL Server索引进阶:第三级,聚集索引
  3. 任务管理平台_基于notion详谈任务规划的思路(二):搭建任务管理平台
  4. SAP Hybris Commerce里类似ABAP里的透明表设计
  5. java 拆箱_Java自动装箱拆箱
  6. python sort dict 总结
  7. 星云链智能合约开发(六):智能合约开发与部署
  8. Struts分页的一个实现
  9. php字库,TCPDF生成内置字库的PDF
  10. 配置文件(properties类)
  11. 再次盈利的芒果超媒,下一步剑指电商
  12. 迅雷种子为什么php文件后缀,迅雷BT文件后缀是什么?
  13. 群晖 Docker Gitlab 安装 及 https配置
  14. Linux--基础知识点--4.1--vim寄存器
  15. PDF加密如何加密?分享两个方法给你
  16. nodejs调用java的jar包进行PPT转pdf
  17. 打造在线简历生成器,让面试官眼前一亮……
  18. 图像超分:HAN(Single Image Super-Resolution via a Holistic Attention Network)
  19. 一、什么是JavaWeb?
  20. MetaMask轻钱包教程 修心手把手带你玩小狐狸 钱包小白必备非原创

热门文章

  1. 决策树的value是什么意思_从零开始的机器学习实用指南(六):决策树
  2. python—while循环、字符串
  3. 数据库范式5nf_第四范式(4NF)| 数据库管理系统
  4. c语言宏函数怎么传递宏参数_C语言中的宏参数评估
  5. 6大分布式定时任务对比
  6. 面试官 | JVM 为什么使用元空间替换了永久代?
  7. 转载:JAVA获取时间戳,哪个更快
  8. Linux debian安装Typora教程
  9. 去马赛克神器 JavPlayer TG Modle 最新版
  10. K8S+Helm 安装 Jupyterhub