concurrentHashMap1.7
数据加锁就会影响效率 我们尽可能的不去加锁 ,但是必须保证线程的安全 所以底层用到了CAS操作 Unsafe类
chp的数据默认存放数量为32(16*2)
segment继承了可重入锁 ,segment数组是一个个的锁(分段锁),在高并发情况下,各个锁之间不会相互影响,这样保证了效率
chp的 key、value不允许有空值
key的高位 决定了存放在segment数组的坐标
key的地位 决定了存放在hashEntry数组的坐标
put总结:
segemnt是一个个的锁。某一个segemnt加锁不影响其他segemnt操作、
当有两个线程同时对一个segemnt操作时,另外一个线程会采用自旋的方式去等待锁,拿到后自行添加
数组扩容
如果元素都是存放在同一个位置的话,只需要迁移一次
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 关键字