一、ConcurrentHashMap
1、结构图
2、线程安全
注意:节点数组segsments 集合。
节点数组初始化:采用volatile 变量 CAS保证线程安全。
节点数组定位:unsafe getObjectVolatile 获取头节点,通过对此节点synchronized保证线程安全
3、节点数组
为了保证数组分散均匀,采用hash值&数组大小(2的N次方-1),数组大小一定要注意
4、总结
通过数组节点的分散,枷锁颗粒化,提高了性能
二、HashTable
与ConCurrentHashMap区别:这个枷锁用synchronized 枷锁整个表
另外集合位置定位,采用取模运算
三、hashMap
采用的结构与ConCurrentHashMap 相同,但是没有枷锁
后续补充其他集合