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

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 中,集合类如 ...

    ConcurrentModificationException解决办法.md

    ConcurrentModificationException异常是在Java编程中处理集合时经常会遇到的一个问题。当集合正在被迭代时,如果同时又对其进行修改(比如增加、删除元素等操作),就可能会触发此异常。解决这个问题的方法有很多种...

    ConcurrentModificationException(解决方案).md

    Java中的ConcurrentModificationException异常通常会在单线程环境中产生,当对集合进行迭代的过程中,集合的结构在迭代器创建后被修改(增加或删除元素)时抛出。在多线程环境中,处理集合数据时,这种情况更容易...

    ConcurrentModificationException如何解决.md

    ConcurrentModificationException异常是Java中常见的运行时异常,尤其在多线程环境下对集合进行迭代时,如果另一个线程同时对集合进行修改操作,就可能会抛出这种异常。为了解决这个问题,我们有几种策略可以采取。 ...

    ConcurrentModificationException.md

    在多线程编程中,对集合进行迭代操作时可能会遇到ConcurrentModificationException异常,该异常是因为在迭代过程中,集合结构被其他线程修改,从而导致迭代器状态不一致,进而抛出异常。HarmonyOS或其他Java开发环境...

    java.util.ConcurrentModificationException(解决方案).md

    其中一个典型的问题就是java.util.ConcurrentModificationException异常,通常在遍历集合时试图修改集合内容时抛出。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.List.md

    Java的List集合在遍历元素时若需要删除元素,应避免直接使用集合的remove方法,因为这样做会触发ConcurrentModificationException异常。正确的做法是使用迭代器Iterator或ListIterator,并且在遍历过程中使用迭代器...

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

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

Global site tag (gtag.js) - Google Analytics