###ConcurrentHashMap
HashMap :数组+链表
ConcurrentHashMap:segment数组+链表
1、segment数组加上了可重入锁。(ConcurrentHashMap中的每个segment都加了锁)
2、会把key 散列2次 key–hash–hash
因为1次的散列效果非常差。散列的hash值后面的数字大部分都一样。
会造成Hash碰撞(也叫hash冲突)
3、put:都是先进行扩容,链式数组每次扩容2倍
4、size:获取每个 segment下的数组长度,再相加
##ConcurrentHashMap结构图
###AtomicInteger
AtomicInteger 是通过 volatile 和Unsafe类中的(JNI)实现CAS原理。