社区
Java SE
帖子详情
ConcurrentHashMap了解吗?说说实现原理。
Crazy Code Farmer
2020-10-10 04:32:59
HashMap大家都熟知,ConcurrentHashMap又是怎样的呢!展开你的想象!
...全文
3542
4
打赏
收藏
ConcurrentHashMap了解吗?说说实现原理。
HashMap大家都熟知,ConcurrentHashMap又是怎样的呢!展开你的想象!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
哈希塞特
2020-10-29
打赏
举报
回复
hashmap里面有个数组,为了安全都是直接锁住hashmap整个对象。ConcurrentHashMap里面的锁是分段的,锁住的只是数组的一个元素,只有当同时存两个元素hash值相同发生冲突时才有锁竞争,本来hash冲突的概率就不高,所以ConcurrentHashMap效率很高,大概率不会发生锁竞争
八爻老骥
2020-10-10
打赏
举报
回复
学Java的好处就是随时可以翻源代码。
wj振藩
2020-10-10
打赏
举报
回复
第一步 打开ConcurrentHashMap.java文件,第二步 打开翻译软件用于注释翻译备用 第四步 泡杯枸杞茶 慢慢看
KeepSayingNo
2020-10-10
打赏
举报
回复
HashMap只要你真的懂了,就没有什么容器不懂了。ConcurrentHashMap 没啥牛逼的,就加了一把内置锁
ConcurrentHashMap
了解
吗?
说
说
实现原理
参考答案 HashMap 是线程不安全的,效率高;HashTable 是线程安全的,效率低。
ConcurrentHashMap
可以做到既是线程安全的,同时也可以有很高的效率,得益于使用了分段锁。
实现原理
JDK 1.7:
ConcurrentHashMap
是通过数组 + 链表实现,由 Segment 数组和 Segment 元素里对应多个 HashEntry 组成 value 和链表都是 volatile 修饰,保证可见性
ConcurrentHashMap
采用了分段锁技术,分段指的就是 Segm
concurrenthashmap
实现原理
1.JDK 1.7
ConcurrentHashMap
是由 Segment 数组结构和 HashEntry 数组结构组成 Segment 继承自 ReentrantLock,是一种可重入锁;其中,HashEntry 是用于真正存储数据的地方 static final class Segment<K,V> extends ReentrantLock implements Serializable { // 真正存放数据的地方 transient volatile Hash
一文就懂
ConcurrentHashMap
实现原理
哈希表就是一种以键-值(key -indexed) 存储数据的结构,我们只要输入待查 找的值即 key,即可查找到其对应的值。哈希表是一种非常高效的数据结构 ,设计优良的哈希函数可以使其上的增删改查操作达到O(1)级别。Java为我们提供了一个现成的哈希结构 ,那就是HashMap类 ,在前面的文章中我曾经介绍过HashMap类 ,知道它的所有方法都未进行同步 ,因此在多线程环境中是不安全的。
ConcurrentHashMap
实现原理
(很详细)
1.7用的数组+链表,安全的方式为分段锁1.8用的数组+链表+红黑树,结构和HashMap一致,抛弃了分段锁,采用CAS+自旋以及Synchronized为什么key为null的时候会报错?因为如果key为null,无法分辨是key为null还是key无法找到返回为null,这在多线程下时模糊的。
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章