并发编程补充

concurrenthashmap第一步,初始化segment数组

并发编程补充

 

 hashentry的数组

并发编程补充

 

 定位segment元素的位置 用段偏移量 和段掩码   concurrentcysize默认值16

先拿到hash值,再散列算法,减少散列冲突  让元素均匀分布在segment上面 从而提高容器的存储效率   不进行再散列的话所有元素都会放到一个segment中

并发编程补充

 

 并发编程补充

 

定义成volatile   多线程同时读,保证不会读到过期的值 单线程的写    happens before规则 写在读之前 所以volatile每次都能拿到最新的值

定位到segment用的是高四位 定位元素用的是全部的值  为了避免两次散列的值一样(元素在segment散列开,但没有在hashentry散列开)

 并发编程补充

 

 put  扩容成原数组的两倍,再将原数组散列插入到新数组中

并发编程补充

 

 并发编程补充

 

 size统计元素个数

 

上一篇:Manifest merger failed with multiple errors, see logs问题处理


下一篇:【unity AR项目开发】----vuforia AR