ConcurrentHashMap的特色就是分段锁技术,相对于HashMap和HashTable效率提高了。
ConcurrentHashMap包含了一个Segment[], 每个Segment包含一个HashEntry[]。
Segment其实是一个ReentrantLock。
定位到segment:有一个对key的hashcode有一个再哈希的过程。
定位到HashEntry:对key的hashcode实行再哈希。
get操作:
不需要加锁,因为所有的共享变量都是volatile类型的,根据happens-before规则,读到的数据总是最新的,所以不需要加锁。
put操作:
需要加锁
size操作:
如果无法成功统计,才对每一个segment加锁统计。