Collections.synchronizedMap entrySet ConcurrentModificationException
时间: 2023-12-19 07:04:32 浏览: 53
使用`Collections.synchronizedMap`方法创建的同步Map,可以确保多线程环境下的安全访问。但是如果在迭代Map的`entrySet()`时,其他线程对Map进行了修改,就会抛出`ConcurrentModificationException`异常。
这是因为`entrySet()`方法返回的是一个视图,它与原始Map相关联。当原始Map被修改时,视图也会相应地发生变化。如果在迭代过程中,其他线程对原始Map进行了增删操作,就会导致迭代器检测到不一致的修改,从而抛出异常。
为了避免这个问题,可以在迭代过程中使用`synchronized`关键字对Map进行锁定,或者使用`synchronizedMap`方法返回的Map对象进行迭代操作。这样可以确保在迭代期间其他线程无法修改Map,从而避免`ConcurrentModificationException`异常的发生。
阅读全文