【问题标题】:Is it possible to have number of locks greater than number of buckets in ConcurrentHashMap in Java?Java中的ConcurrentHashMap中的锁数是否可能大于桶数?
【发布时间】:2017-02-06 12:04:26
【问题描述】:

我们知道,java 的 ConcurrentHashMap 有很多内部锁,每个锁都守护着存储桶数组的某个区域。

public ConcurrentHashMap(int initialCapacity, 加载负载因子, int concurrencyLevel)

初始容量:16; 负载工厂:0.75f; 并发级别:16。

即默认 concurrencyLevel 和 initialCapacity 相同。

是可能有更多没有。锁比没有。桶?

【问题讨论】:

    标签: java multithreading locking concurrenthashmap


    【解决方案1】:

    不,CHM 使用每个存储桶作为锁(在 Java 7 之前,每个存储桶都是 ReentrantLock 现在每个存储桶都将 synchronized。所以根据定义,不能有更多锁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 2023-03-14
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多