ConcurrentHashMap
的相关教程(参见此处),有一些疑问。
在这篇文章中提到,
ConcurrentHashMap
允许多个读取器并发读取而不会阻塞。这是通过根据并发级别将 Map 分成不同的部分,并仅在更新期间锁定 Map 的一部分来实现的。默认并发级别为 16,因此 Map 被分成 16 部分,每个部分都受不同的锁控制。这意味着,16 个线程可以同时操作 Map,直到它们正在操作 Map 的不同部分。尽管如此,这也有一个警告:由于更新操作(如put()
、remove()
、putAll()
或clear()
)未进行同步,因此并发检索可能无法反映 Map 上最新的更改文章中还提到了另一个重要点:另一个需要记住的重要点是,在 CHM 上迭代时,
keySet
返回的迭代器是弱一致的,它们仅反映某个特定时间点上的ConcurrentHashMap
状态,并可能不反映任何最近的更改
我没有理解加粗的重点,你能提供更多信息或者用一个简单的程序演示一下吗?