ConcurrentHashMap、HashMap、HashTable区别
ConcurrentHashMap是线程安全的,有线程操作时把数组中操作的节点加锁,而不是把整个哈希表加锁;ConcurrentHashMap比HashTable处理效率高
ConcurrentHashMap的代码Demo如同HashMap和HashTable区别
ConcurrentHashMap不同JDK版本的区别
JDK1.8之前
ConcurrentHashMap底层数据结构是链表和数组;固定长度16的segment数组,数组的第一个位置默认挂载一个HashEntey长度为2的小数组;HashEntey数组长度*默认加载因子0.75的结果为HashEntey数组长度扩容的节点值
ConcurrentHashMap1.7底层原理结构图
JDK1.8
ConcurrentHashMap底层数据结构是链表和数组、红黑树;固定长度16的segment数组,每个数组节点被线程操作时都会加synchronized的对象锁(链表的头节点)并且使用cas算法(三个参数:内存值、线程栈中旧的内存值、线程栈中修改的值),每个链表的长度不小于8此链表自动变成红黑树
ConcurrentHashMap1.8底层原理结构图