当前位置: 首页 > news >正文

Java面试33-fail-safe机制与fail-fast机制分别有什么作用

fail-safefail-fast,是多线程并发操作集合时的一种失败处理机制

  • fail-fast:表示快速失败,当异常产生时,直接抛出异常,程序终止。fail-fast主要是体现在当我们在遍历集合元素的时候,经常会使用迭代器,但在迭代器遍历元素的过程中,如果集合的结构(modCount)被改变的话,就会抛出异常ConcurrentModificationException异常,防止继续遍历。常见的的使用fail-fast 方式遍历的容器有HashMap 和ArrayList 等。
  • fail-safe:表示安全失败,采用安全失败机制的集合容器,在遍历时不是直接在集合内容上访问的,而是先复制原有集合内容,在拷贝的集合上进行遍历。由于在遍历过程中对原集合所做的修改不能被迭代器检测到,所以不会触发ConcurrentModificationException。

fail-safe基于拷贝内容的优点是避免了ConcurrentModificationException,但同样地,迭代器并不能访问到修改后的内容,即:迭代器遍历的是开始遍历那一刻拿到的集合拷贝,在遍历期间原集合发生的修改迭代器是不知道的。java.util.concurrent包下的容器都是安全失败的,比如ConcurrentHashMap和CopyOnWriteArrayList等,可以在多线程下并发使用,并发修改。

http://www.dtcms.com/a/109323.html

相关文章:

  • 从代码学习深度学习 - RNN PyTorch版
  • 浙江大学郑小林教授解读智能金融与AI的未来|附PPT下载方法
  • 电子电气架构 --- 面向服务的体系架构
  • Python垃圾回收:循环引用检测算法实现
  • 【面试题】如何用两个线程轮流输出0-200的值
  • 大模型应用初学指南
  • Linux 查找文本中控制字符所在的行
  • 线性欧拉筛
  • AF3 OpenFoldDataset类解读
  • 【面试篇】Kafka
  • 记录学习的第二十天
  • 【LeetCode 题解】数据库:626.换座位
  • Java基础:Logback日志框架
  • C# 与 相机连接
  • 接收灵敏度的基本概念与技术解析
  • 【计网】作业三
  • 2025年2月,美国发布了新版移动灯的安规标准:UL153标准如何办理?
  • MySQL:库表操作
  • CATIA装配体全自动存储解决方案开发实战——基于递归算法的产品结构树批量处理技术
  • 一款非常小的软件,操作起来非常丝滑!
  • 语音识别播报人工智能分类垃圾桶(论文+源码)
  • MySQL 基础使用指南-MySQL登录与远程登录
  • MySQL超全笔记
  • 快速掌握MCP——Spring AI MCP包教包会
  • Pyspark学习二:快速入门基本数据结构
  • 4月3号.
  • Python 函数知识梳理与经典编程题解析
  • FFmpeg录制屏幕和音频
  • 单片机学习之定时器
  • 嵌入式海思Hi3861连接华为物联网平台操作方法