ConcurrentHashMap锁定
问题内容:
我在中的某处读到了ConcurrentHashMap
,整个地图对象未锁定,而是在部分地图上进行了锁定。
有人可以详细说明锁定何时进入画面吗?
是对的,在读取地图时不涉及锁定,而在更新地图时仅使用锁定吗?
问题答案:
是的,ConcurrentHashMap
使用多个锁(默认情况下,使用16个锁),每个锁控制哈希的一部分。
在特定段中设置数据时,将获得该段的锁。
获取数据时,使用易失性读取。如果易失性读取导致未命中,则将获得该段的锁定,以进行成功读取的最后一次尝试。