多线程学习(六)ConcurrentHashMap
来源:汇智旅游网
ConcurrentHashMap
简介
- ConcurrentHashMap是J.U.C包中的提供高效和线程安全性高的 HashMap ,所以ConcurrentHashMap 在并发场景使用性高。
- ConcurrentHashMap是 Map 的派生类,所以 api 基本和 Hashmap 是类似,主要就是 put 、get 这些方法。
JDK1.7 与 JSDK1.8 的比较
源码分析
- put()方法源码分析
总结
- ConcurrentHashMap是Java中的一个线程安全且高效的HashMap实现。平时涉及高并发如果要用map结构,那第一时间想到的就是它。相对于hashmap来说,ConcurrentHashMap就是线程安全的map,其中利用了锁分段的思想提高了并发度。
- JDK 1.8 之后,采用了 CAS + synchronized 来保证并发安全性
- ConcurrentHashMap 记录元素是通过 CounterCell 数组来记录的,而这个数组可以利用分布式的思想极大的加强并发效率
- ConcurrentHashMap 添加元素是通过CAS 的操作去完成的,但是如果当前数组下标有元素,说明 hash 碰撞了,就要使用synchronized 锁住,然后进行链表的添加