首页 > 其他 > 详细

面试三十三、fail-fast和fail-safe

时间:2021-09-16 03:05:05      阅读:14      评论:0      收藏:0      [点我收藏+]

1、fail-fast

  java.util包下的集合类都是fail-fast机制

  内部有一个modCount记录修改次数,使用迭代器每一次遍历时都会去校验modCount值

  是否有变换,如果变了说明有其它线程对集合做了操作,抛出fail-fast异常。

  如:ArrayList,HashMap

2、fail-safe

  java.util.concurrent包下的集合类都是fail-safe机制

  迭代器基于对原集合的克隆进行遍历,所有对原容器的修改不会影响到遍历。但是会出现

  遍历得到的数据不是最新的。hashTable和concurrentHashMap因为此原因不支

  持key/value为null,因为无法判断对应的key是不存在还是为空,因为你无法再次

  调用contain来对key进行校验是否存在(有可能克隆集合里没有而其它线程将此key放入原集合)

面试三十三、fail-fast和fail-safe

原文:https://www.cnblogs.com/jijiecong/p/15267465.html

(0)
(0)
   
举报
评论 一句话评论(0
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!