1.ConcurrentHashMap在1.7的底层数据结构是数组+链表,使用分段锁来保证线程安全
2.将整个Map分成了多个段,每个段维护自己的一部分键值对
3.每次只锁住当前访问的段,而不是锁定整个map ,可以对不同的段并行更新
4.在扩容的时候,只会对当前访问的段进行扩容,而不是整个map,减少扩容开销
5.ConcurrentHashMap在1.8的底层数据结构使用数组+链表+红黑树
6.不在使用分段锁,来保证线程安全
7.而是在初始化Node数组的时候,使用cas+volatile来保证线程安全
8.put的时候采用cas和Synchronized来保证线程安全