HashMap
小于 1 分钟JavaJUC并发编程
回顾HashMap
Map<String, String> map = new HashMap<>();
map是这样用的吗?工作中不用这个。
默认等价于什么?加载因子、初始化容量。
Map<String, String> map = new HashMap<>(16,0.75);

HashMap线程不安全及解决办法
public class MapTest {
public static void main(String[] args) {
/**
* map是这样用的吗?工作中不用这个。
* 默认等价于什么?Map<String, String> map = new HashMap<>(16,0.75);
* 加载因子、初始化容量
*/
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,5));
System.out.println(map);
}, String.valueOf(i)).start();
}
}
}
测试发现异常:ConcurrentModificationException。
Collections工具类
Map<String, String> map = Collections.synchronizedMap(new HashMap<>());
使用ConcurrentHashMap

Map<String, String> map = new ConcurrentHashMap<>();