ConcurrentHashMap简解(1.7)
继承关系:
public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
implements ConcurrentMap<K, V>, Serializable {
private static final long serialVersionUID = 7249069246763182397L;
成员变量:
static final int DEFAULT_INITIAL_CAPACITY = 16;//初始容量为16
static final float DEFAULT_LOAD_FACTOR = 0.75f;//负载因子为0.75
static final int DEFAULT_CONCURRENCY_LEVEL = 16;//默认并发度为16(就是初始容量的大小,一旦指定了,就不能更改大小了),就是16个线程可以同时进行操作
static final int MAXIMUM_CAPACITY = 1 << 30;//Segment的最大容量
static final int MAX_SEGMENTS = 1 << 16;
static final int RETRIES_BEFORE_LOCK = 2;
final Segment<K,V>[] segments;//存储数据的容器
底层结构:
数组+数组+链表
如下图:
final Segment<K,V>[] segments;
transient Set<K> keySet;
transient Set<Map.Entry