博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速失败fail—fast)和安全失败(fail—safe)
阅读量:6217 次
发布时间:2019-06-21

本文共 542 字,大约阅读时间需要 1 分钟。

  快速失败:

  在上节list集合中就包含快速失败, 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的结构进行了修改(增加、删除),

则会抛出Concurrent Modification Exception。

  java.util包下的集合类都是快速失败的,不能在多线程下发生并发修改(迭代过程中被修改)。

  安全失败: 

   采用安全失败机制的集合容器,在遍历时不是直接在集合内容上访问的,而是先复制原有集合内容,在拷贝的集合上进行遍历。

       原理:由于迭代时是对原集合的拷贝进行遍历,所以在遍历过程中对原集合所作的修改并不能被迭代器检测到,所以不会触发Concurrent Modification Exception。

         缺点:基于拷贝内容的优点是避免了Concurrent Modification Exception,但同样地,迭代器并不能访问到修改后的内容,

即:迭代器遍历的是开始遍历那一刻拿到的集合拷贝,在遍历期间原集合发生的修改迭代器是不知道的。

  java.util.concurrent包下的容器都是安全失败,可以在多线程下并发使用,并发修改。

转载于:https://www.cnblogs.com/xp0813/p/11074310.html

你可能感兴趣的文章
华为S5700系列交换机AR配置静态IP双链路负载分担
查看>>
centos安装qt开发环境
查看>>
关闭端口占用程序
查看>>
winXP procession秘钥
查看>>
KD树学习小结
查看>>
tomcat启动失败
查看>>
日期 英文 英语 韩文 韩语
查看>>
原码、反码、补码
查看>>
opencv 4.0 + linux + cuda静态编译
查看>>
Qt MVD框架下修改视图中数据项/标题的背景颜色说明(Qt 5.10.1)
查看>>
软件工程第二次作业——制作网站
查看>>
c# IL 指令集
查看>>
HDU 1231:最大连续子序列(DP)
查看>>
Mysql基础操作
查看>>
Winhex数据恢复学习笔记(四)
查看>>
合工大OJ 1337 一加二减三
查看>>
Python学习之==>函数
查看>>
Chromium base库分割字符串SplitString
查看>>
win95+ie3-win10+ie11 浏览器执行漏洞
查看>>
BZOJ 3110 [Zjoi2013]K大数查询 ——整体二分
查看>>