首页 > 其他分享 >6. 说说什么是 fail-fast?

6. 说说什么是 fail-fast?

时间:2024-12-23 11:25:21浏览次数:3  
标签:java ConcurrentModificationException 什么 fast 集合 线程 fail

fail-fast 机制是 Java 集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生 fail-fast 事件。

例如:当某一个线程 A 通过 iterator 去遍历某集合的过程中,若该集合的内容被其他线程所改变了,那么线程 A 访问集合时,就会抛出 ConcurrentModificationException 异常,产生 fail-fast 事件。这里的操作主要是指 add、remove 和 clear,对集合元素个数进行修改。

解决办法:建议使用“java.util.concurrent 包下的类”去取代“java.util 包下的类”。

可以这么理解:在遍历之前,把 modCount 记下来 expectModCount,后面 expectModCount 去和 modCount 进行比较,如果不相等了,证明已并发了,被修改了,于是抛出ConcurrentModificationException 异常。

标签:java,ConcurrentModificationException,什么,fast,集合,线程,fail
From: https://www.cnblogs.com/tim-zuo/p/18623543

相关文章

  • 为什么会有同源策略?
    同源策略是Web开发中的重要概念,它的存在主要是为了保护用户隐私和安全。以下是对同源策略存在原因的详细解释:防止信息泄露:同源策略阻止了恶意网站通过跨域请求获取用户在其他站点上的敏感信息。例如,它禁止一个网页中的脚本访问另一个不同域的网页中的数据,包括读取、修改或删除它......
  • js预解析顺序(优先级)是什么?
    JavaScript的预解析顺序(优先级)可以归纳为以下几点:预解析的顺序是从上到下。浏览器在解析JavaScript代码时,会首先进行预解析,这一过程是从上到下进行的。函数的优先级高于变量。在预解析阶段,如果遇到函数声明和变量声明,函数声明会被优先处理。也就是说,如果变量和函数重名,函数会覆......
  • 你认为3+1项目有答案好还是没答案好?为什么?
    “3+1项目”可能指的是某种特定的项目结构或培训模式,不过不论是在哪种上下文中,关于是否有答案的问题,其实涉及到了学习和实践的不同理念。在前端开发的背景下,我们可以从几个方面来探讨这个问题:有答案的优点:明确的学习目标:当学习者知道有标准答案时,他们可以更明确地知道自己的......
  • 用一篇文章搞懂什么是电商API
    电商API,即电子商务应用程序编程接口(ElectronicCommerceApplicationProgrammingInterface),是电子商务平台提供给开发者和商家的一种技术接口,它允许第三方应用程序访问和操作平台的数据和服务。下面将从定义、功能、优势、应用场景及文档编写等方面对电商API进行详细解析。......
  • 使用`typeof test === "object"`来判定test是否是对象有什么缺陷?如何避免?
    在JavaScript中,使用typeoftest==="object"来判断一个变量test是否为对象有一定的缺陷。这种方法的缺陷主要包括:无法区分null和对象:在JavaScript中,typeofnull的结果也是"object",这会导致当test为null时,上述判断也会返回true,这显然是不准确的。无法识别数组和null之外的其......
  • 你有参加过什么类型的比赛吗?说说你的感受
    比赛类型:我“参加”的是一场名为“前端开发者挑战赛”的在线编程比赛。比赛经历:准备阶段:在比赛开始前,我做了大量的准备工作。由于前端开发涉及的技术栈较为广泛,我复习了HTML5、CSS3、JavaScript等基础知识,并深入了解了React、Vue等前端框架。此外,我还通过在线教程和实战项目来......
  • 什么是Serverless?
    Serverless是一种云计算架构模式,其主要思想是开发者可以通过第三方提供的服务直接实现应用程序的构建和部署。其实,在Serverless的架构思想中,没有应用程序的概念了,应用程序被分解为无状态的函数。这些函数被云平台统一进行管理。开发者只需要关注业务逻和函数的编写,无需关注......
  • 为什么会不认真?
    为什么会不认真?1.优越感偏见2.希望自己做的好,心理上就觉得自己已经做得很认真了,实际可能并非如此。3.对自己没有一个非常明确和客观的分析判断4.平常做事情就很不认真5.觉得自己都可以做全对的,所以理应很认真6.懒得对简单的题进行过多分析如何避免?客观冷静全面地了解自己......
  • 什么是RIAD技术?
    RAID(RedundantArrayofIndependentDisks)即独立磁盘冗余阵列,是一种把多个独立的物理磁盘按不同的方式组合起来形成一个逻辑磁盘阵列的技术,以下是详细介绍:一、RAID的主要目的1、提高性能        通过数据条带化(DataStriping)来实现。例如,在RAID0中,数据被分割成......
  • 为什么要写单元测试呢?
    前言其实以前第一次接触要写单元测试(UnitTest)的时候,我其实并不理解为什么要写这个,简直是浪费时间啊,当时是为了应对检查而写,心中的这个疑惑并未消散。我就想不能就这样不明不白的写啊,写了半天覆盖率才百分之二十,再继续写又变成了百分之十几,于是我就各种网上找资料,对应着自己的代......