美文网首页
Java008 Java为什么不能在iterator中做删除操作

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

作者: 攻城狮托马斯 | 来源:发表于2020-04-12 14:10 被阅读0次

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

ConcurrentModificationException的问题.

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

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

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

相关文章

网友评论

      本文标题:Java008 Java为什么不能在iterator中做删除操作

      本文链接:https://www.haomeiwen.com/subject/scupmhtx.html