Java008 Java为什么不能在iterator中做删除操作

2020-04-12  本文已影响0人  攻城狮托马斯

在这样的操作中,通常会出现:

ConcurrentModificationException的问题.

这是因为Java在迭代过程中改变了原来集合的储存内容,就会触发fail-fast机制。

这是源码,也就是说,当ArraySize改变的时候,modCount和expectedModCount就会发生变化,倒是Exception的产生。

本质上,当两个线程同时Concurrently操作一块memory的时候,如果一个线程先把其中的元素删了,那么另一个线程在遍历的时候就会遇到问题,这是concurrently发生的,不知道谁快谁慢。这就是叫ConcurrentModificationException的原因。

上一篇 下一篇

猜你喜欢

热点阅读