ConcurrentHashMap分析
ConcurrentHashMap分析: 闻其名,便知其义,并发的hashmap, 我们先来看看ConcurrentHashMap数据结构图: ConcurrentHashMap由多个Segment组成,而Segment内部是由HashEntry(存放key-value对)数组组成(类似于HashMap的Entry数组)。 从代码来看ConcurrentHashMap的基本属性: //segment掩码值: 用于计算key所在segments索引值 final int segmentMask; //segment偏移值: 用于计算key所在segments索引值 final int segmentShift; //segments数组,其内部也是由HashEntry数组实现,正因为有了多个segment,才提高了并发度 final Segment<K,V>[] segments; 看到重要的Segment数据结构: /** * 其实现了ReentrantLock, 自身可线程安全 * 其本身就像个HashMap */ static final class Segment<K,V> extends ReentrantLock implements Serializable { //存放元素的table transient volatile HashEntry<K,V>[] table