1. 举例说明HashMap线程不安全
public class NotSafeDemo {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
for (int i = 1; i <= 30 ; 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. 解决方法
- 集合工具类:Map<String, String> map = Collections.synchronizedMap(new HashMap<>());
- JUC方法:Map<String, String> map = new java.util.concurrent.ConcurrentHashMap<>();