一、为什么要使用ConcurrentHashMap
HashMap线程不安全,而Hashtable线程安全但效率低下,因为Hashtable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下Hashtable的效率非常低下。因为当一个线程访问Hashtable的同步方法时,其他线程访问Hashtable的同步方法时,可能会进入阻塞或轮询状态。如线程1使用put进行添加元素,线程2不但不能使用put方法添加元素,并且也不能使用get方法来获取元素,所以竞争越激烈效率越低。
二、ConcurrentHashMap实现
JDK1.8利用CAS+Synchronized来保证并发更新的安全。数据结构采用:数组+链表+红黑树。
三、源码分析
参考文章