在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList: 注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提 ...
分类:
其他好文 时间:
2020-01-07 18:30:26
阅读次数:
59
1.集合底层结构 https://blog.csdn.net/qq_25868207/article/details/55259978 2.java中快速失败(fail-fast)和安全失败(fail-safe)的区别是什么? https://www.cnblogs.com/songanwei/p/ ...
分类:
编程语言 时间:
2019-11-06 13:18:53
阅读次数:
74
fail-fast和fail-safe的区别: fail-safe允许在遍历的过程中对容器中的数据进行修改,而fail-fast则不允许。 fail-fast ( 快速失败 )fail-fast:直接在容器上进行遍历,在遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出ConcurrentModi ...
分类:
其他好文 时间:
2019-10-08 22:17:59
阅读次数:
139
LinkedList JDK1.8.0_191 基于双向链表实现,实现了Deque接口,可以用于队列操作 不是线程安全,可以使用Collections.synchronizedList包裹一个线程安全的ListedList 支持fail-fast机制 ListedList的变量 transient ...
分类:
其他好文 时间:
2019-07-22 20:13:36
阅读次数:
119
HashMap只是相对线程安全,如果出现数据竞争就抛出fail fast;HashTable则将每个操作都上锁,如果有耗时的操作,那么后续的操作均会被阻塞,大大降低程序的吞吐率。而ConcurrentHashMap正是为了解决这样一个问题而出现的。 ConcurrentHashMap和HashMap ...
分类:
编程语言 时间:
2019-06-02 16:29:13
阅读次数:
160
最近去某公司面试,被问到了一个简单的问题,ArrayList中要删除一些元素应该怎么操作?答曰:"使用Iterator迭代器遍历,判断之后再用迭代器提供的remove()方法将判断为true的元素删掉",问:“为什么要选择这个方法?”答曰:“迭代器采用的是fail-fast机制,foreach循环内 ...
分类:
其他好文 时间:
2019-04-24 19:44:20
阅读次数:
194
在迭代遍历线程不安全的集合的时候,如ArrayList,如果其他线程修改了该集合,那么将抛出ConcurrentModificationException,这就是 fail-fast 策略。 modCount记录了集合的修改次数,在迭代器初始化过程种会将这个值赋给迭代器的expectedModCou ...
分类:
编程语言 时间:
2019-04-24 00:24:50
阅读次数:
140
fail-fast(快速失败):多线程情况下,一个线程通过迭代器读取集合中的值时,另一个线程修改了集合,则会抛出ConcurrentModificationException异常; 集合中通过modCount记录集合被修改的次数,每次执行next和remove方法的时候都会先检查这个modCount ...
分类:
其他好文 时间:
2019-04-23 19:06:24
阅读次数:
166
HashSet怎么保证添加元素不重复?
HashSet是否允许null元素?
HashSet是有序的吗?
HashSet是同步的吗?
什么是fail-fast?
分类:
编程语言 时间:
2019-04-14 23:03:04
阅读次数:
271
基本概念 操作系统中 heap 和 stack 的区别 什么是基于注解的切面实现 什么是 对象/关系 映射集成模块 什么是 Java 的反射机制 什么是 ACID BS与CS的联系与区别 Cookie 和 Session的区别 fail-fast 与 fail-safe 机制有什么区别 get 和 ...
分类:
编程语言 时间:
2019-04-04 09:25:27
阅读次数:
201