`
bell0901
  • 浏览: 28577 次
社区版块
存档分类
最新评论

ConcurrentModificationException异常

    博客分类:
  • Java
阅读更多

       应用出现异常,发现报了ConcurrentModificationExceptdaogouion。之前倒是没碰到过。查资料发现是线程不安全的集合在进行迭代遍历时,集合进行了修改操作引起的。

       

static<T> Collection<T> 
synchronizedCollection(Collection<T> c) 
Returns a synchronized (thread-safe) collection backed by the specified collection. 
static<T> List<T> 
synchronizedList(List<T> list) 
Returns a synchronized (thread-safe) list backed by the specified list. 
static<K,V> Map<K,V> 
synchronizedMap(Map<K,V> m) 
Returns a synchronized (thread-safe) map backed by the specified map. 
static<T> Set<T> 
synchronizedSet(Set<T> s) 
Returns a synchronized (thread-safe) set backed by the specified set. 
static<K,V> SortedMap<K,V> 
synchronizedSortedMap(SortedMap<K,V> m) 
Returns a synchronized (thread-safe) sorted map backed by the specified sorted map. 
static<T> SortedSet<T> 
synchronizedSortedSet(SortedSet<T> s) 
Returns a synchronized (thread-safe) sorted set backed by the specified sorted set. 

        使用Collections中的方法。

        比如:Set s = Collections.synchronizedSet(new HashSet(...));验证暂时没问题。

0
1
分享到:
评论

相关推荐

    java.util.ConcurrentModificationException 异常问题详解1

    Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...

    Java中增强for循环的实现原理和坑详解

    如果在遍历集合或数组时,修改了集合或数组的内容,这可能会引发ConcurrentModificationException异常。这种异常是在运行时抛出的,而不是在编译期。 例如,在遍历集合时,修改集合的内容可能会引发...

    【面试普通人VS高手系列】Fail-safe机制与Fail-fast机制分别有什么作用.doc

    Fail-fast机制是一种快速失败机制,在集合遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出ConcurrentModificationException异常,从而导致遍历失败。这种机制下的集合容器,例如HashMap和ArrayList等,都是...

    使用Iterator接口遍历集合元素

    3. Iterator 迭代器采用的是快速失败(fail-fast)机制,一旦在迭代过程中检测到该集合已经被修改(通常是程序中其它线程修改),程序立即引发 ConcurrentModificationException 异常,而不是显示修改后的结果,这样...

    ArrayList.md

    3. 迭代过程中,即使Map结构被修改,也不会抛ConcurrentModificationException异常; 4. 除了数组+链表+红黑树的基本结构外,新增了转移节点,是为了保证扩容时的线程安全的节点; 5. 提供了很多Stream流式方法,...

    java集合-CopyOnWriteArraySet的使用

    只读迭代:由于写时复制的机制,CopyOnWriteArraySet 的迭代器是只读的,即迭代过程中不会抛出 ConcurrentModificationException 异常。但是,迭代器获得的数据可能不包含最新的修改。 较高的内存占用:由于每次...

    java-大数据基础面试思考.pdf

    快速失败(Fail-Fast)迭代器机制是指在用迭代器遍历集合的过程中,如果检测到集合在迭代过程中被修改了,就会迅速抛出ConcurrentModificationException异常。快速失败机制的迭代器是为单线程设计的,因为它们不能...

    Java面试题大全.docx

    Iterator的特点是只能单向遍历,但是更加安全,因为它可以确保,在当前遍历的集合元素被更改的时候,就会抛出ConcurrentModificationException异常。 5. 引用的对象是否一定能存活?不一定,看Reference类型,弱...

    多线程中使用Java集合类.doc

    这意味着在多线程环境下,当一个线程正在遍历集合(通过迭代器进行)时,另一个线程修改了集合内容,就会触发快速失败(fail-fast)机制,导致ConcurrentModificationException异常。例如,上述代码中,线程在删除...

    java并发容器CopyOnWriteArrayList实现原理及源码分析

    另外,CopyOnWriteArrayList由于其"读写分离"的思想,遍历和修改操作分别作用在不同的list容器,所以在使用迭代器进行遍历时候,不会抛出ConcurrentModificationException异常。 CopyOnWriteArrayList容器的缺点是...

    《Java开发手册(泰山版)》灵魂13问.pdf

    但如果操作不当,例如在遍历ArrayList时直接使用subList方法返回的子列表进行remove操作,可能会导致ConcurrentModificationException异常,因为subList返回的子列表是一个视图,没有自己的迭代器。 5. 避免for循环...

    程序员面试宝典 java.pdf,这是一份不错的文件

    使用Iterator时,应避免在遍历过程中修改集合,因为这可能导致 ConcurrentModificationException 异常。 【ListIterator接口】ListIterator是Iterator的子接口,专为List接口设计,除了提供基本的遍历功能外,还...

    java-集合-知识点汇总

    * fail-fast与fail-safe:Java集合在遍历时可能会抛出ConcurrentModificationException异常,这是因为集合在遍历时可能会被修改。fail-fast机制将抛出异常,而fail-safe机制将忽略修改。 * transient关键字:在...

    HashMap源码剖析共10页.pdf.zip

    HashMap的迭代器是fail-fast的,这意味着在遍历过程中,如果其他线程修改了HashMap,迭代器会抛出ConcurrentModificationException异常。 9. **遍历方式** HashMap提供了两种遍历方式:通过keySet()、entrySet()或...

    面经总结.pdf

    8. 线程安全:HashMap不是线程安全的,如果在多线程环境下,一个线程正在遍历HashMap,同时另一个线程修改了HashMap,这会导致迭代器快速失败(fail-fast),即抛出ConcurrentModificationException异常。...

    Java集合容器面试题(2020最新版)-重点.pdf

    5. 快速失败机制:当集合在迭代过程中被修改时,如果不使用迭代器的remove()方法,可能会触发快速失败,即抛出ConcurrentModificationException异常。 6. Iterator:迭代器是遍历集合的主要方式,提供了hasNext()和...

    集合框架面试题.pdf

    快速失败迭代器在检测到集合结构在迭代过程中被修改时会抛出ConcurrentModificationException异常。这种策略适用于java.util包下的所有集合类,它们不是线程安全的。而java.util.concurrent包下的集合类则提供安全...

    Thread基础知识点笔记总结

    在高并发的情况下使用 ArrayList 的时候,会出现 ConcurrentModificationException 异常。HashSet 底层是 HashMap。 5. 锁 Java 中有两种锁:公平锁和非公平锁。公平锁在队列直接排队,非公平锁先抢锁,抢不到再...

    比较Vector、ArrayList和hashtable hashmap

    在使用时,另一个线程改变了 Vector,那么将会抛出 ConcurrentModificationException 异常。因此,如果多线程并发访问 Vector,通常需要通过 synchronized 关键字进行同步控制。 HashMap 类 HashMap 是一个散列表,...

    ConcurrentHashMap共18页.pdf.zip

    与传统集合类的迭代器不同,ConcurrentHashMap 的迭代器是非阻塞的,即使在遍历过程中有其他线程修改了映射表,迭代器也不会抛出 ConcurrentModificationException 异常,而是能够正确地反映修改后的状态。...

Global site tag (gtag.js) - Google Analytics