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

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放入原集合)

posted on 2021-09-14 14:38  Iversonstear  阅读(38)  评论(0编辑  收藏  举报

导航