ConcurrentHashMap 的实际用例

Practical use cases for ConcurrentHashMap

我不是在寻找 HashMapCollections.synchronizedMap(Map)HashTable 等各种数据结构之间的差异。 SO 满是这样的帖子。

我还知道,如果另一个编写器线程修改映射,ConcurrentHashMap 不会为 reader 线程抛出 ConcurrentModificationException

当 reader 线程可以负担得起处理 陈旧数据时?
我正在寻找有关实际场景的内容 也就是说,假设线程 1 在线程中的时间 T1 获得 Iterator,然后在稍后的时间 T2 插入一个元素以由另一个线程线程 2 进行映射。 ConcurrentHashMap 表示不能保证线程 1 会看到更新的数据,所以我猜它会不断迭代过时的数据。

任何人都可以指出我认为可以解决的具体问题吗?比如在实现缓存、多线程网络服务等方面或者您自己的实践经验中遇到的问题??

我遇到的所有问题总是需要更新数据视图,因为这是将数据插入地图的全部目的,因此 readers 可以处理更新的数据,或者,问题是什么同步地图不合适?

理论上一切看起来都不错,但我的好奇心出现了,因为我在日常工作中从未遇到过 readers 可以负担得起在陈旧视图上工作的任何情况。

总的来说 - 在极少数情况下您不需要确切的数据,同时又负担不起。一个经常被引用的例子是 post 的“喜欢”数量——没有人关心它是 2564 还是 2565,但“+1”一定很快。