集合中的快速失败
2017-12-05 16:07
29 查看
在ArrayList中存在一个变量modCount用来记录操作数。
在其内部类Itr中记录了另一个变量expectedModCount 在操作集合的时候modCount会加加,同时把操作数赋值给期望数,在使用迭代器进行操作集合时会先判断操作数是否等于期望数,如果不相等就直接抛出并发修改异常,因此在遍历非线程安全的数据结构时应该优先使用迭代器遍历。
在其内部类Itr中记录了另一个变量expectedModCount 在操作集合的时候modCount会加加,同时把操作数赋值给期望数,在使用迭代器进行操作集合时会先判断操作数是否等于期望数,如果不相等就直接抛出并发修改异常,因此在遍历非线程安全的数据结构时应该优先使用迭代器遍历。
public void add(E e) { checkForComodification(); try { int i = cursor; ArrayList.this.add(i, e); cursor = i + 1; lastRet = -1; expectedModCount = modCount; } catch (IndexOutOfBoundsException ex) { throw new ConcurrentModificationException(); } }
final void checkForComodification() { if (modCount != expectedModCount) throw new ConcurrentModificationException(); }
相关文章推荐
- Java 集合类的快速失败
- Java集合的快速失败和安全失败
- 【JAVA集合】集合迭代器快速失败行为及CopyOnWriteArrayList
- Java集合(16)--快速失败机制(Fail-Fast)
- 快速失败(Java集合)
- java集合架构____集合迭代器快速失败行为及CopyOnWriteArrayList
- java中的快速失败(fail-fast)与安全失败(fail-safe)
- java中给集合快速取值最大值和最小值
- 快速取两个集合的交集
- 移动互联网时代的创业生存法则:快速试错,廉价失败
- 编程珠玑-第2章课后习题8:如何快速确定一个集合中其元素之和不超过某值【未完成】
- java中的fail-fast(快速失败)机制
- fail-fast(快速失败/报错机制)-ConcurrentModificationException
- Windows系统故障快速解决技巧大集合
- 快速上手Spring--8. 集合对象注入
- TreeMap的快速失败(支付宝笔试题)
- 咱们来聊聊快速失败和安全失败
- Java 快速、轻量级 Collection 类的集合GNU Trove
- swift 快速奔跑的兔几 本节的内容是:表格视图和集合视图
- 集合类的4种遍历方式Block遍历,快速遍历,枚举器,普通遍历