我读到ConcurrentHashMap在多线程中比Hashtable更好,这是因为在存储桶级别具有锁,而不是在映射范围内具有锁。每个 map 最多可以锁定32个锁。想知道为什么32个锁,为什么不超过32个锁。
最佳答案
如果您正在谈论Java的ConcurrentHashMap
,则限制为arbitrary:
如果阅读source code,很明显,最大段数为2 ^ 16,对于不久的将来可能出现的任何需求,这应该绰绰有余。
您可能已经在考虑某些替代性的实验性实现,例如this one:
请注意,通常,当超过32个线程试图更新单个ConcurrentHashMap
时,瓶颈通常不是同步效率。