基础
CocurrentHashMap
1.7
采用分段锁技术,其中 Segment 继承于 ReentrantLock。支持最大的并发数与 Segment 大小相同。当线程占用锁访问 Segment 时不影响其他 Segment 。
- Get 非常高效,通过 volatile 保证内存的可见性,每次获取都是最新的值,不需要加锁。
- Put
- 先通过 key 定位到 Segment
- 尝试获取锁,如果锁被占用,会自旋获取锁
- 获取到锁后,将值设置到 table 对应的 key 中
1.8
-
采用 CAS + synchronized 保证并发的安全性
-
利用红黑树提高查询效率
-
synchronized 取代 ReentrantLock。synchronized 性能提升很大