1、示例
public class ContainerNotSafeDemo {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
for (int i = 1; i <= 20; i++) {
new Thread(() -> {
map.put(Thread.currentThread().getName(), UUID.randomUUID().toString().substring(0,8));
System.out.println(map);
},String.valueOf(i)).start();
}
}
}
运行会有java.util.ConcurrentModificationException,并发修改异常。
2、解决方案
- 使用Collections工具类下的Collections.synchronizedMap()
```java
Map
map = Collections.synchronizedMap(new HashMap ());
- 使用JUC包下的ConcurrentHashMap代替HashMap:
```java
Map<String, String> map = new ConcurrentHashMap<>();