我正在阅读ConcurrentHashMap
和这个相关的教程,并且有一些问题。
在文章中,提到了
ConcurrentHashMap
允许多个阅读器同时阅读而没有任何阻塞。这是通过根据并发级别将 Map 划分为不同的部分并在更新期间仅锁定 Map 的一部分来实现的。默认并发级别为 16,因此 Map 分为 16 个部分,每个部分由不同的锁管理。这意味着,16 个线程可以同时对 Map 进行操作,直到它们对 Map 的不同部分进行操作。尽管ConcurrentHashMap
保持线程安全完好无损,但这仍然具有高性能。不过,它有一个警告:由于更新操作,如put()
,remove()
,putAll()
或clear()
不同步,并发检索可能不会反映 Map 上的最新更改文章中还提到了另一点:另一个要记住的重要一点是 CHM 上的迭代,返回的迭代器
keySet
是弱一致的,它们只反映ConcurrentHashMap
某一点的状态,可能不反映任何最近的变化。
我没有理解以粗体突出显示的要点,您能否提供更多信息或在一个简单的程序中向我展示?