【发布时间】:2015-02-20 19:54:36
【问题描述】:
我是 Java 和 stackoverflow 的新手,正在向从事 Collections Framework 工作的有经验的人寻求答案。
我读到 hashTable 是线程安全的,concurrentHashMap 也是如此,但是 concurrentHashMap 比 hashTable 快,因为它可以将映射的段锁定给访问线程。
这在内部是如何工作的?段的大小是如何决定的?示例:如果 concurrentHashMap 中有 40 个条目,并且有 3 个线程尝试检索/修改数据,则如何确定段?
任何关于此的图像/解释/代码都会非常棒。提前致谢。
【问题讨论】:
-
基本上 ConcurrentHashMap 具有更好的性能,因为使用 CAS 操作而不是导致许多上下文切换和等待的锁定来实现。
-
这是一篇关于 ConcurrentHashMap 的优秀文章:burnison.ca/articles/the-concurrency-of-concurrenthashmap
-
谢谢,这真的很有帮助。不知道为什么它被标记为重复,因为另一个问题是“HashMap 和 HashTable 之间的差异”
标签: java multithreading