首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时使用ConcurrentHashMap

何时使用ConcurrentHashMap
EN

Stack Overflow用户
提问于 2013-01-09 05:45:58
回答 1查看 18.6K关注 0票数 7

可能重复: What’s the difference between ConcurrentHashMap and Collections.synchronizedMap(Map)?

我在读HashMap,Collenctions.synchonizedMap和ConcurrentHashMap的不同之处。我的理解是,Collections.synchronizedMap对整个集合应用了锁,从而导致性能开销。但是ConcurrentHashMap不使用同步。它使用片段来实现结果,因此它提供了类似于HashMap的性能。

请建议我的理解是否正确。同样,如果是这样的话,我可以在任何地方使用ConcurrentHashMap,即使可能没有多个线程访问它?

EN

回答 1

Stack Overflow用户

发布于 2013-01-09 05:52:54

ConcurrentHashMap不使用同步。它使用分段来实现结果。

ConcurrentHashMap在段级同步,允许像putIfAbsent这样的原子操作,或者用新值替换旧值。这一优势来自于一种叫做锁条纹的技术。

我可以在任何地方使用ConcurrentHashMap,即使可能没有多线程访问它?

不,我没有理由这么做。撇开性能不谈,数据结构的选择也是关于如何使用代码的文档(HashMap->单线程)。只有在所使用的类是线程安全的情况下才使用ConcurrentHashMap;否则,在非线程安全类中使用线程安全数据结构会增加下一个查看代码的人的困惑。

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

https://stackoverflow.com/questions/14228974

复制
相关文章

相似问题

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