【发布时间】:2011-10-05 05:47:29
【问题描述】:
我刚刚在阅读《清洁代码》这本书,并遇到了这样的说法:
在 Java 还年轻的时候,Doug Lea 写了一本开创性的书[8] Concurrent 用Java编程。除了这本书,他还开发了几本 线程安全的集合,后来成为 JDK 的一部分
java.util.concurrent包。该包中的集合是安全的 对于多线程情况,它们表现良好。 事实上,ConcurrentHashMap实现比 HashMap 在中表现更好 几乎所有情况。它还允许同时并发 读写,它有支持普通复合的方法 否则不是线程安全的操作。如果 Java 5 是 部署环境,开始ConcurrentHashMap
请注意,在上面的引用中,我使用了“[n]”,其中 n 是某个数字,表示作者提供参考的地方,正如您所看到的,他没有为粗体部分提供任何参考。
并不是我不相信这个说法,而是我很想知道这个说法的支持证据。那么,有没有人知道任何显示ConcurrentHashMap 和HashMap 的性能统计数据的资源?或者谁能向我解释为什么 ConcurrentHashMap 比 HashMap 快?
我可能会在休息的时候研究一下 ConcurrentHashMap 在工作中的实现,但现在我想听听其他 SOers 的答案。
【问题讨论】:
-
如果没有看到上下文,很难说出作者的意思,但也许作者的意思是像在所有 HashMap 方法周围坚持“同步”这样的东西是一个坏主意,并且使用明确设计的东西来支持多个线程,如 ConcurrentHashMap,是一个更好的主意。
-
我在 Clean Code 中找不到这句话,但这是一本大书...
-
@Matthew 在第 183 页,页面顶部。这是第 13 章 - 并发。
-
@Jeff Foster 不是真的,它只是说开始使用 ConcurrentHashMap 而不是 HashMap。我用确切的段落更新了我的问题。
标签: java performance data-structures concurrency hashmap