java – 理论上,ConcurrentHashMap的Segment和HashMap的桶之间有什么区别?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 理论上,ConcurrentHashMap的Segment和HashMap的桶之间有什么区别?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含994字,纯文字阅读大概需要2分钟。
内容图文
据我所知,在HashMap中,条目(Key,Value)基于散列(Key.hashCode)放置在桶中 – >表示存储桶位置的索引.如果条目已经放置在该位置,则创建链接列表,并且新条目(如果它具有不同的键 – >通过equals()方法)放置在链接列表的开头.
>我可以将这个概念与ConcurrentHashMap共同关联,但是不是Buckets,而是有各个线程锁定的段.而不是条目,有HashEntry(ies).以类似的方式,创建链接列表,如果插入的键值对不同,则基于键的equals(),它被放置在链表的末尾.
>当我这样说时,我是否正确:
CHM的put不同步,因此任何线程都可以访问这个方法,这个put方法计算传递给它的密钥的哈希值并得到段索引(Kinda就像桶一样).然后,仅针对该段,它调用put方法.现在在Segment下,put方法指定会有一个lock(),这样只有一个线程可以改变特定段中的数据,从而得出如果并发级别为16则应该有16个线程,因此这些线程将是能够一次仅PUT值一个段.
解决方法:
>存储桶是地图阵列中的单个插槽. HashMap和ConcurrentHashMap都是一样的.从概念上讲,后者将其数组分成若干段(每个段是一个引用数组),但就是这样.请注意,Java 8中的CHM不再具有段,它们都是单个数组.
>是的,这是被称为分段锁定的方案.它减少了线程间的争用,但并没有消除它.
内容总结
以上是互联网集市为您收集整理的java – 理论上,ConcurrentHashMap的Segment和HashMap的桶之间有什么区别?全部内容,希望文章能够帮你解决java – 理论上,ConcurrentHashMap的Segment和HashMap的桶之间有什么区别?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。