本節(jié)介紹一個常用的并發(fā)容器 - ConcurrentHashMap,它是HashMap的并發(fā)版本,與HashMap相比,它有如下特點:

  • 并發(fā)安全

  • 直接支持一些原子復(fù)合操作

  • 支持高并發(fā)、讀操作完全并行、寫操作支持一定程度的并行

  • 與同步容器Collections.synchronizedMap相比,迭代不用加鎖,不會拋出ConcurrentModificationException

  • 弱一致性

我們分別來看下。

并發(fā)安全

我們知道,HashMap不是并發(fā)安全的,在并發(fā)更新的情況下,HashMap的鏈表結(jié)構(gòu)可能形成環(huán),出現(xiàn)死循環(huán),占滿CPU,我們看個例子:

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

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