java.util.ConcurrentModificationException
是 Java 中常见的异常之一,通常在集合类(如 ArrayList
、HashMap
等)被多个线程同时修改时抛出。这个异常的主要原因是当一个线程正在遍历集合,而另一个线程同时修改了这个集合时,遍历操作就会抛出这个异常。
remove
或 add
方法仍然会抛出 ConcurrentModificationException
。ConcurrentModificationException
可以确保多线程环境下的数据一致性和程序的稳定性。Collections.synchronizedList
、Collections.synchronizedMap
等。CopyOnWriteArrayList
、ConcurrentHashMap
等。CopyOnWriteArrayList
在写操作时会复制整个数组,适用于读多写少的场景。以下是一个使用 ConcurrentHashMap
的示例:
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentModificationExample {
public static void main(String[] args) {
ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
// 多线程环境下安全地修改
Thread t1 = new Thread(() -> {
map.put("key3", "value3");
});
Thread t2 = new Thread(() -> {
map.forEach((k, v) -> System.out.println(k + ": " + v));
});
t1.start();
t2.start();
}
}
通过以上方法,可以有效避免 java.util.ConcurrentModificationException
,确保多线程环境下的数据安全和程序稳定性。
领取专属 10元无门槛券
手把手带您无忧上云