是使用集合的iterator后,再改变就可能抛出这个异常
The iterators returned by all of this class's "collection view methods"
are fail-fast: if the map is structurally modified at any time after the
iterator is created, in any way except through the iterator's own
remove method, the iterator will throw a
ConcurrentModificationException. Thus, in the face of concurrent
modification, the iterator fails quickly and cleanly, rather than
risking arbitrary, non-deterministic behavior at an undetermined time in
the future.
iterators是fail-fast的,如果这个集合(存在特定的某些集合,比如HashMap)在iterator创建之后在结构上又改变了(通
过任何方式除了iterator本身的remove方法),iterator就会抛ConcurrentModificationException。因
此,在使用过程中又面临同时被修改,iterator就会以又快速又干净地fail来应对,而不是在将来某个不确定的时间冒面临随机又不确定的表现之风险
分享到:
相关推荐
【Fail-safe 和 Fail-fast Iterator 知识点详解】 在Java编程中,集合类是我们处理数据时不可或缺的一部分。在遍历集合元素时,我们通常会使用迭代器(Iterator)。然而,当我们尝试在遍历过程中修改集合时,可能会...
Fail-Fast机制是一种Java集合框架中的设计策略,主要用于在多线程环境下确保程序的正确性和稳定性。当一个线程在遍历集合时,如果另一个线程对集合进行了结构上的修改,Fail-Fast机制会立即抛出`...
Java中的Fail-Fast机制详解 Java中的Fail-Fast机制是一种错误检测机制,当多个线程对集合进行结构上的改变操作时,有可能会产生Fail-Fast机制。这种机制是Java集合框架的一部分,可以帮助检测并发修改引发的错误。 ...
fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所...
使用迭代器的另一个关键特性是快速失败(Fast-Fail)机制。当多个线程同时遍历一个集合并修改集合状态时,如果没有适当的同步控制,可能会导致迭代器抛出ConcurrentModificationException。这是因为迭代器在创建时会...
掌握 Iterator 的 fail-fast 、fail-safe 机制 ArrayList() 会使用长度为零的数组 ArrayList(int initialCapacity) 会使用指定容量的数组 public ArrayList(Collection<? extends E> c) 会使用 c 的大小作为数组...
fail-fast 是 Java 集合框架中的一个机制,当多个线程对同一个集合的内容进行操作时,就可能会产生 fail-fast 事件。例如:当某一个线程 A 通过 iterator 去遍历某集合的过程中,若该集合的内容被其他线程所改变了;...
fail-fast会在检测到并发修改时立即抛出异常,而fail-safe则使用复制集合的方式,允许并发修改,但可能返回旧的或不完整的结果。 15. **在迭代一个集合的时候,如何避免ConcurrentModificationException?** 使用...
Java集合详解3:Iterator,fail-fast机制与比较器 Java集合详解4:HashMap和HashTable Java集合详解5:深入理解LinkedHashMap和LRU缓存 Java集合详解6:TreeMap和红黑树 Java集合详解7:HashSet,TreeSet与...
3. Iterator 迭代器采用的是快速失败(fail-fast)机制,一旦在迭代过程中检测到该集合已经被修改(通常是程序中其它线程修改),程序立即引发 ConcurrentModificationException 异常,而不是显示修改后的结果,这样...
需要注意的是,Iterator接口和ListIterator接口的实现需要遵循一定的规则,例如,Iterator接口的实现需要遵循Fail-Fast策略,即,如果集合在迭代期间被修改,将抛出ConcurrentModificationException异常。...
3. **Fast-Fail Exception**: 当检测到集合被修改后,迭代器会抛出`ConcurrentModificationException`异常。这表明当前的遍历过程不再安全,应该停止进一步的操作。 #### 七、示例分析 假设有一个`ArrayList`实例`...
5. **`checkForComodification()`方法**:这是一个用于实现快速失败(fail-fast)机制的方法,用于检测集合在迭代过程中是否被其他线程或代码进行了修改。如果检测到集合被非法修改,则抛出`...
fail-fast 和 fail-safe 迭代器是 Java Collections 框架中的两种迭代器模式。fail-fast 迭代器在集合修改时,会抛出 ConcurrentModificationException 异常。fail-safe 迭代器在集合修改时,会返回当前集合的快照。...
* fail-fast与fail-safe:Java集合在遍历时可能会抛出ConcurrentModificationException异常,这是因为集合在遍历时可能会被修改。fail-fast机制将抛出异常,而fail-safe机制将忽略修改。 * transient关键字:在...
由于`Iterator`的`fail-fast`特性,它在单线程环境中提供了安全性保证,但在多线程环境中,如果需要在遍历的同时修改集合,需要采取额外的同步措施。另一方面,`Enumeration`不支持`fail-fast`,因此在多线程环境下...
- HashMap 的迭代器(Iterator)是 fail-fast 的,这意味着如果在遍历过程中有其他线程修改了 HashMap(除了迭代器自身的 `remove()` 方法),迭代器将抛出 ConcurrentModificationException。 - 而 Hashtable 的 ...
根据给定文件的信息,我们可以提炼出以下关于Java集合的关键知识点: ### 1. Java集合概述与常见类 Java集合框架是Java平台的核心组件之一,它为开发者提供了多种数据结构来存储和操作对象集合。Java集合主要包括...
7. **fail-fast和fail-safe**:fail-fast迭代器(如ArrayList和HashSet的迭代器)在检测到集合结构被修改时会抛出ConcurrentModificationException。而fail-safe迭代器(如CopyOnWriteArrayList的迭代器)可以在多...