二、线程安全(Thread-safe)的集合对象:
● Vector 线程安全
● HashTable 线程安全
● StringBuffer 线程安全
● juc下ConcurrentHashMap ,set,queue
线程安全集合的两种实现方式:1、ConcurrentHashMap 2、Collections.synchronizedMap()
初始化长度:DEFAULT_CAPACITY=16
put的实现原理(jdk1.8):初始化长度为16的node数组,根据put元素的key的hash值与数组长度做&运算决定元素所落的槽位;若槽位已存在元素,会在槽位位置生成链表桶,当链表长度大于8时,链表会转化成红黑树。
源码分析:首次添加元素会初始化ConcurrentHashMap (通过cas操作initTable,设置默认数组长度为16,设置默认扩容因子为0.75) sizeCtl = 16*0.75=12,表示当数组负载长度大于12时会进行扩容
transfer方法是实现扩容节点的迁移,
网友评论