这个问题直接跟在from my previous question here in SO后面。我想我的第二个问题的答案是否定的。所以我想知道为什么java.util.concurrent包中没有ConcurrentLinkedHashMap?我的意思是有ConcurrentHashMap但没有ConcurrentLinkedHashMap。在并发环境中有这样一个类难道一点意义都没有吗?我的意思是它不可用的主要技术原因是什么?在Guava/ Apache Commons中有类似的东西吗?
这个问题直接跟在from my previous question here in SO后面。我想我的第二个问题的答案是否定的。所以我想知道为什么java.util.concurrent包中没有ConcurrentLinkedHashMap?我的意思是有ConcurrentHashMap但没有ConcurrentLinkedHashMap。在并发环境中有这样一个类难道一点意义都没有吗?我的意思是它不可用的主要技术原因是什么?在Guava/ Apache Commons中有类似的东西吗?
3条答案
按热度按时间yeotifhr1#
为什么jdk中没有ConcurrentLinkedHashMap类?
您可能需要问Oracle Java人员,但我认为它是以下各项的组合:
在这种情况下,在我看来,实现集合类以使迭代键/值/条目集不成为并发瓶颈将是......嗯......困难的。(即使人们 * 已经 * 想出了一种方法来做到这一点,但事实仍然是,设计、实现和 * 证明 * 通用的高并发数据结构和算法的正确性是困难的。)
3lxsmp7m2#
看起来有一个来自谷歌https://code.google.com/p/concurrentlinkedhashmap/
也检查这篇文章:What does it mean that ConcurrentLinkedHashMap has been integrated into Guava?
s5a0g9ez3#
从设计的Angular 来看,总是使用
同步Map中的示例
为什么呢?因为同步机制与高度抽象(
Map
接口)绑定在一起。但是假设我是对的,仍然使用ConcurrentHashMap
可能有两个原因:ConcurrentHashMap
在此同步机制之前存在我的观点是,在设计的理想世界里,即使
ConcurrentHashMap
也不应该存在。