java.util.ConcurrentModificationException 记一次坑

集合在单线程,一个循环内,有添加又删除会出现此异常。

多线程时,在不同的循环操作同一个集合,会出现此异常。

因为,集合长度发生改变时,在迭代器未结束前,迭代器的大小不会发生变化。

1、保证在同一个进程 或 锁

2、保证迭代中只有一种操作

3、集合.remove() 每次迭代只能remove一个元素

4、迭代器.remove()要满足条件1、2

原文地址:https://www.cnblogs.com/verlout/p/9805934.html

时间: 2024-08-06 08:53:56

java.util.ConcurrentModificationException 记一次坑的相关文章

集合循环删除问题-报错java.util.ConcurrentModificationException解析

java.util.ConcurrentModificationException 异常问题详解 环境:JDK 1.8.0_111 在Java开发过程中,使用iterator遍历集合的同时对集合进行修改就会出现java.util.ConcurrentModificationException异常,本文就以ArrayList为例去理解和解决这种异常. 一.单线程情况下问题分析及解决方案 1.1 问题复现 先上一段抛异常的代码. 1 public void test1() { 2 ArrayList

Java.util.ConcurrentModificationException的理解与修改

在Java开发的过程中有没有遇到类似的异常信息 Exception in thread "main" java.util.ConcurrentModificationException, 下面介绍异常原因以及这种异常的改进方法,内容很简单,有什么问题还望指正. 假设我们要实现这样一个例子: 判断集合里面有没有"world"这个元素,如果有,就添加一个"javaee"元素 出现异常的代码如下: import java.util.ArrayList;

遇到java.util.ConcurrentModificationException

今天犯了一个简单的错: List<Book> books = adapter.data; for(Book book: books){     if(book.id == bookId){         books.remove(book);     } } 结果遇到java.util.ConcurrentModificationException,起初以为是Android里操作不在同一线程的UI的问题,其实没那么复杂,只是犯了一个常见的Java错误.改为下面即可: List<Book

有关java.util.ConcurrentModificationException

有关java.util.ConcurrentModificationException java doc对这个类的定义: This exception may be thrown by methods that have detected concurrent modification of an object when such modification is not permissible. For example, it is not generally permissible for o

LinkedList - java.util.ConcurrentModificationException

package com.test.io; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.LinkedList; import com.mysql.jdbc.Buffer; public class ReadKeyFile { public static void

java集合--java.util.ConcurrentModificationException异常

ConcurrentModificationException 异常:并发修改异常,当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常.一个线程对collection集合迭代,另一个线程对Collection进行修改的时候, 就会出现上面的异常. 下面看一下代码: package cn.itcast.p4.list.demo; import java.util.ArrayList; import java.util.Iterator; import java.util.List; pub

java.util.ConcurrentModificationException 解决 Android

java.util.ConcurrentModificationException 解决       Android  java 在项目里面 遇到了这个bug : E/AndroidRuntime(22055): java.util.ConcurrentModificationException E/AndroidRuntime(22055):      at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:569) 查看了下

java.util.ConcurrentModificationException异常分析

Java在操作ArrayList.HashMap.TreeMap等容器类时,遇到了java.util.ConcurrentModificationException异常.以ArrayList为例,如下面的代码片段: [java] view plaincopy import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.CopyOnWriteArr

java.util.ConcurrentModificationException 异常解决办法及原理

最近在修程序的bug,发现后台抛出以下异常: Exception in thread "main" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) at java.util.HashMap$KeyIterator.next(HashMap.java:828) at com.keyman.demo.test.ClearResult