本节介绍一个常用的并发容器 - ConcurrentHashMap,它是HashMap的并发版本,与HashMap相比,它有如下特点:
并发安全
直接支持一些原子复合操作
支持高并发、读操作完全并行、写操作支持一定程度的并行
与同步容器Collections.synchronizedMap相比,迭代不用加锁,不会抛出ConcurrentModificationException
弱一致性
我们分别来看下。
并发安全
我们知道,HashMap不是并发安全的,在并发更新的情况下,HashMap的链表结构可能形成环,出现死循环,占满CPU,我们看个例子:
public static void unsafeConcurrentUpdate() { final Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < 100; i++) { Thread t = new Thread() { Random rnd = new Random(); &nb