java - 为什么 Java 不附带 CopyOnWriteMap?

标签 java collections map concurrency concurrenthashmap

JDK 为 SetList 提供了 CopyOnWrite* 实现,但对于 Map 和 I' 则没有我经常感叹这个事实。我知道还有其他的集合实现有它们,但如果一个作为标准发布就好了。这似乎是一个明显的遗漏,我想知道是否有充分的理由。有人知道为什么会忽略它吗?

最佳答案

我想这取决于您的用例,但是当您已经拥有 ConcurrentHashMap 时,为什么还需要 CopyOnWriteMap? ?

对于一个有很多读者但只有一个或几个更新的简单查找表来说,这是一个很好的选择。

与写集合时的副本相比:

读取并发:

等于写集合时的副本。多个读取器可以以无锁方式同时从 map 中检索元素。

写并发:

比基本上序列化更新(一次更新一个)的写入集合上的副本具有更好的并发性。使用并发 HashMap ,您很有可能同时进行多个更新。如果您的哈希键分布均匀。

如果您确实想要在 write map 上获得副本的效果,您始终可以初始化并发级别为 1 的 ConcurrentHashMap。

关于java - 为什么 Java 不附带 CopyOnWriteMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4241477/

相关文章:

java - 从 toString 转换回 Object

java - 双向无限/动态 ViewPager

c# - .net 字典和查找添加/更新

java - 关于 mongodb capped collection 的困惑

c++ - 使用 find 方法后如何更新 std::map ?

java - "no method return value"在 Eclipse 调试视角中意味着什么?

java - 在Java中合并两个类?

map - OpenLayers 投影

java - 是否有一种 map 可以针对具有相同值的*键序列*进行优化?

java - 奥利奥 Wifi 热点创建失败