gpt4 book ai didi

java - 需要简单解释 "lock striping"如何与 ConcurrentHashMap 一起工作

转载 作者:IT老高 更新时间:2023-10-28 20:36:58 24 4
gpt4 key购买 nike

根据 Java Concurrency in Practice,第 11.4.3 章说:

Lock splitting can sometimes be extended to partition locking on a variablesized set of independent objects, in which case it is called lock striping. For example, the implementation of ConcurrentHashMap uses an array of 16 locks, each of which guards 1/16 of the hash buckets; bucket N is guarded by lock N mod 16.

我在理解和可视化锁 strip 化和存储桶机制方面仍然存在问题。有人可以用很好理解的话来解释这个:)

提前致谢。

最佳答案

HashMap 建立在一个数组上,其中哈希函数将一个对象映射到底层数组中的一个元素。假设底层数组有 1024 个元素 - ConcurrentHashMap 实际上把它变成了 16 个不同的 64 个元素的子数组,例如{0, 63}, {64, 127} 等。每个子数组都有自己的锁,因此修改 {0, 63} 子数组不会影响 {64, 127} 子数组 - 一个线程可以写入第一个子数组,而另一个线程写入第二个子数组。

关于java - 需要简单解释 "lock striping"如何与 ConcurrentHashMap 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16151606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com