1、示例

  1. public class ContainerNotSafeDemo {
  2. public static void main(String[] args) {
  3. Map<String, String> map = new HashMap<>();
  4. for (int i = 1; i <= 20; i++) {
  5. new Thread(() -> {
  6. map.put(Thread.currentThread().getName(), UUID.randomUUID().toString().substring(0,8));
  7. System.out.println(map);
  8. },String.valueOf(i)).start();
  9. }
  10. }
  11. }

运行会有java.util.ConcurrentModificationException,并发修改异常。

2、解决方案

  • 使用Collections工具类下的Collections.synchronizedMap() ```java Map map = Collections.synchronizedMap(new HashMap());

- 使用JUC包下的ConcurrentHashMap代替HashMap:
```java
 Map<String, String> map = new ConcurrentHashMap<>();