面试三十三、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放入原集合)

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

上一篇:golang logrus日志按小时拆分(月删除)


下一篇:C#实现微信公众号群发消息(解决一天只能发一次的限制)