gpt4 book ai didi

java - 当 concurrencyLevel 大于 ConcurrentHashMap 的容量时会发生什么?

转载 作者:行者123 更新时间:2023-11-29 07:33:08 24 4
gpt4 key购买 nike

一段时间以来,我一直在为一个问题绞尽脑汁,我环顾四周,但没有找到答案。我想知道如果 concurrencyLevel 大于 map 的 capacity 会发生什么。

默认情况下都是 16,这意味着每个桶都会有一把锁。如果 capacity 为 32 且 concurrencyLevel 为 16,则将在 2 个存储桶上持有锁。但是当 concurrencyLevel 为 32 且 capacity 为 16 时会发生什么?

每个桶是否由 2 个锁持有,如果 concurrencyLevelcapacity 的分布不均匀,比如 24 和 16,会发生什么?

最佳答案

没有什么特别的事情发生。你检查过 ConcurrentHashMap 的文档了吗?它说:“此外,为了与此类的以前版本兼容,构造函数可以选择指定预期的 concurrencyLevel 作为内部大小调整的附加提示。”这是提示,不是限制。此外,关于 concurrencyLevel:“并发更新线程的估计数量。该实现可能会使用此值作为调整大小的提示。”注:“可”。因此,如果发生任何事情,大小就会变得不同。也许吧。

如果你想了解更多的实现细节,你可以研究源代码。它可用。在 Java 1.8 中,它包含以下两行:

    if (initialCapacity < concurrencyLevel)   // Use at least as many bins
initialCapacity = concurrencyLevel; // as estimated threads

关于java - 当 concurrencyLevel 大于 ConcurrentHashMap 的容量时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39423007/

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