首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程是否将新值放在ConcurrentHashMap中自己的段中

线程是否将新值放在ConcurrentHashMap中自己的段中
EN

Stack Overflow用户
提问于 2019-07-18 21:38:52
回答 1查看 43关注 0票数 0

我有一个ConcurrentHashMap,并尝试使用putIfAbsent()放入一个键值对。现在,因为每个在concurrentHashMap上工作的线程都有自己的段,它由一组键值对组成。是否会将新的键值对放在它自己的段中,或者没有任何类似的强制要求?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-07-18 22:55:51

你有一个根本性的误解。线程没有自己的段。ConcurrentHashMap的映射根据键的散列码分布在段上,在最好的情况下,访问不同键的线程在不同的段结束,因此可以独立工作。

访问相同键的线程永远不会在不同的段结束。Map的原则是所有密钥都是唯一的,这一原则不会改变。

但不管怎样,这是对过时技术的描述。从Java8开始,ConcurrentHashMap不再使用段。根据容量和散列码分布,所有密钥可能会同时更新。

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

https://stackoverflow.com/questions/57095875

复制
相关文章

相似问题

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