concurrentHashMap1.7

数据加锁就会影响效率 我们尽可能的不去加锁 ,但是必须保证线程的安全   所以底层用到了CAS操作  Unsafe类

 

 

chp的数据默认存放数量为32(16*2)

 

segment继承了可重入锁  ,segment数组是一个个的锁(分段锁),在高并发情况下,各个锁之间不会相互影响,这样保证了效率

 

 

chp的 key、value不允许有空值

 

key的高位 决定了存放在segment数组的坐标

key的地位 决定了存放在hashEntry数组的坐标

 

 

put总结:

segemnt是一个个的锁。某一个segemnt加锁不影响其他segemnt操作、

当有两个线程同时对一个segemnt操作时,另外一个线程会采用自旋的方式去等待锁,拿到后自行添加

 

 

数组扩容

如果元素都是存放在同一个位置的话,只需要迁移一次

 

posted @   11111ghm  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2021-03-08 Mybatis_day01
2021-03-08 java多线程
2021-03-08 计算机408+数据库学习
2021-03-08 java 接口
2021-03-08 leetcode 53. 最大子序和
2021-03-08 java反射机制
2021-03-08 java static 关键字
点击右上角即可分享
微信分享提示