gpt4 book ai didi

java - ConcurrentHashMap 中是否可以有超过 32 个锁

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:34 25 4
gpt4 key购买 nike

我读到 ConcurrentHashMap 在多线程中比 Hashtable 工作得更好,因为它在桶级别有锁而不是映射范围锁。每张 map 最多可能有 32 个锁。想知道为什么是 32 个以及为什么不超过 32 个锁。

最佳答案

如果您谈论的是 Java ConcurrentHashMap,则限制为 arbitrary :

Creates a new map with the same mappings as the given map. The map is created with a capacity of 1.5 times the number of mappings in the given map or 16 (whichever is greater), and a default load factor (0.75) and concurrencyLevel (16).

如果您阅读 source code很明显,最大段数是 2^16,这应该足以满足近期任何可能的需求。

您可能一直在考虑某些替代实验性实现,例如 this one :

This class supports a hard-wired preset concurrency level of 32. This allows a maximum of 32 put and/or remove operations to proceed concurrently.

请注意,一般而言,当超过 32 个线程尝试更新单个 ConcurrentHashMap 时,同步效率以外的因素通常是瓶颈。

关于java - ConcurrentHashMap 中是否可以有超过 32 个锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1779058/

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