社区
Java SE
帖子详情
什么叫快速失败?
gqqnb
2010-12-04 04:35:39
以Java synchronizedCollection集合来说,它的迭代器是快速失败的。
那它失败就失败吧,还快速,它快速在哪里?有多快?怎么个快法?一般的慢速的失败是怎么失败的?
...全文
1577
14
打赏
收藏
什么叫快速失败?
以Java synchronizedCollection集合来说,它的迭代器是快速失败的。 那它失败就失败吧,还快速,它快速在哪里?有多快?怎么个快法?一般的慢速的失败是怎么失败的?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
loshamo
2011-08-20
打赏
举报
回复
原来是这样啊 。
冰思雨
2010-12-07
打赏
举报
回复
顶果子的解释,非常到位.
火龙果被占用了
2010-12-05
打赏
举报
回复
好比对于方法的参数,一开始就检查其是否为 null,而不是到后面等用到的时候再检查(或者不检查),类似于这样的行为称为快速失败。
对于非并发集合来说,在其进行迭代时,若有其他线程修改了增减了集合中的内容,这个迭代会马上感知到,并且立即抛出 ConcurrentModificationException 异常,而不是迭代完成后才告诉你出错了。
龙四
2010-12-05
打赏
举报
回复
就是一旦异步修改了vector,迭代马上就报错,而不是继续迭代,到最后才报错
Dongo2
2010-12-05
打赏
举报
回复
快速失败是指某个线程在迭代vector的时候,不允许其他线程修改该vector的内容,这样迭代器迭代出来的结果就会不准确,如用iterator迭代collection的时候,iterator就是另外起的一个线程,它去迭代collection,如果此时用collection.remove(obj)这个方法修改了collection里面的内容的时候,就会出现ConcurrentModificationException异常,这时候该迭代器就快速失败。
---------正解
润物wu声
2010-12-04
打赏
举报
回复
快速失败是指某个线程在迭代vector的时候,不允许其他线程修改该vector的内容,这样迭代器迭代出来的结果就会不准确,如用iterator迭代collection的时候,iterator就是另外起的一个线程,它去迭代collection,如果此时用collection.remove(obj)这个方法修改了collection里面的内容的时候,就会出现ConcurrentModificationException异常,这时候该迭代器就快速失败。
冰思雨
2010-12-04
打赏
举报
回复
快速失败只是一种直译,它不是音译,但,近似与意译。
就如同手机一样,并不是只有拿在手里才能用,放在兜里,它照样能用。
手机的意译应该叫做移动电话,英文名称Mobile,直译就叫手机。
近似的,我们可以理解为拿在手里的通信机器,但这种定义并不准确,步话机也可以拿在手里通话。
快速失败,也是一个道理。
当然,近似的,我们也可以理解为,
当你的当前线程使用某个集合对象的迭代器访问集合内容的时候,
其他线程在你还没访问完事就已经更改了集合里面的内容。
本来你访问集合内容很迅速就能完事(可能几毫秒的事情),居然还有人(线程)比你(当前线程)还快。
这就叫快速失败。
就好像有一盘饺子,你要数数有几个,在你还没数完,其他人有放入(或拿走)了几个饺子。
你就只能重新再数了。本来你数数就很快,但是,就有人比你手更快。
tom_66
2010-12-04
打赏
举报
回复
快速失败
是指某个线程在迭代vector的时候,不允许其他线程修改该vector的内容,这样迭代器迭代出来的结果就会不准确,如用iterator迭代collection的时候,iterator就是另外起的一个线程,它去迭代collection,如果此时用collection.remove(obj)这个方法修改了collection里面的内容的时候,就会出现ConcurrentModificationException异常,这时候该迭代器就快速失败。
Java基础面试题05:简述
快速
失败
(fail-fast)和安全
失败
(fail-safe)的区别 ?
fail-fast(
快速
失败
) fail-fast 的特点 定义:在遍历集合时,如果检测到集合结构被修改(比如增删改),会立刻抛出 ConcurrentModificationException 异常。 应用场景:java.util 包下的集合(例如 ArrayList、...
什么是模糊测试?
什么是模糊测试? 模糊测试(Fuzz Testing)是一种自动化的软件测试技术,最初是由威斯康辛大学的巴顿·米勒于1989年开发的,通常用于识别程序中的潜在漏洞。模糊测试的核心是自动或半自动的生成随机数据输入到应用...
python中简述什么是异常_python中的异常是什么?应该怎么处理异常?
今天这篇文章我们来了解一下python之中异常处理,首先我们需要理解python的异常,只有知道了python所有的异常以及他们发生的原因,我们才能应对python错误和异常处理的方法,从而
快速
处理异常。什么是异常?异常即是...
HashMap之
快速
失败
避免读写同时进行
HashMap是线程不安全的。那么面对读写同时进行会怎么样呢,JDK面对明显的脏数据如何避免,走进科学为你揭晓传说中的
快速
失败
机制是什么样子
通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要包括:CLS、CTS(CLI)、FCL、Windows下CLR的...
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章