Java ConCurrentHashMap原理总结

来源:互联网 发布:镜仙网络电影 编辑:程序博客网 时间:2024/06/16 00:56
Java ConCurrentHashMap原理总结

ConCurrentHashMap采用锁分段技术提高了并发访问效率。它由segment数组和HashEntry数组组成。segment是采用了可重入锁,在map里扮演锁的角色;HashEntry则存储键值对数据。存储结构图如下:




get取数据操作:1)、定位segment:通过key的hash值进行再hash,取再hash值得高位与(segement数组-1)进行相与。
                           2)、定位HashEntry:直接使用在hash值与(HashEntry数组-1)进行相与。
put操作:1)、判断是否需要对Segment里的HashEntry数组进行扩容。判断依据是threshold*负载因=容量。如果不扩容找到位置进行存储。
                2)、扩容为原来的两倍。
size统计:先尝试2次通过不锁定segement方式来统计各个segement大小,如果统计中容器count发生了变化,则再采用加锁来统计。使用modCount变量来判断是否发生了变化,通过比较前后值得变化来判断是否进行了修改,因为每次修改modcount进行自动加1。
原创粉丝点击