您的位置:首页 > 编程语言 > Java开发

集合中的快速失败

2017-12-05 16:07 29 查看
在ArrayList中存在一个变量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 集合 快速失败