首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于并发hashMap分段和独立锁定

关于并发hashMap分段和独立锁定
EN

Stack Overflow用户
提问于 2013-04-06 18:40:27
回答 1查看 627关注 0票数 0

我在探索concurrenthashMap应用程序接口时发现了static final int DEFAULT_CONCURRENCY_LEVEL = 16;,它在内部声明映射将被分成16个部分,现在我的查询是,我们知道在并发hashMap的情况下,整个映射对象不是锁定的,而是在映射的一部分上进行锁定。

有人可以在一个小图片表示显示地图是如何划分的,以及它如何通过分割内部打破,以及每个线程如何保护它的片段,请建议与小图形图片,这将是更有帮助的。

EN

回答 1

Stack Overflow用户

发布于 2014-01-03 05:40:28

一个ConcurrentHashMap有一个“段”数组,其中每个段都是一个完全独立的哈希表,由它自己的互斥锁保护。调用线程计算给定键的哈希码(32位),然后使用其中的前四位来挑选要使用的段。

当线程执行put()时,它锁定段的互斥锁。get()操作稍微复杂一些,因为它首先尝试在不锁定互斥锁的情况下获取值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15849865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档