类 ConcurrentReferenceHashMap<K,​V>

  • 所有已实现的接口:
    ConcurrentMap<K,​V>, Map<K,​V>

    public class ConcurrentReferenceHashMap<K,​V>
    extends AbstractMap<K,​V>
    implements ConcurrentMap<K,​V>
    一个(弱/软)引用的并发 HashMap

    参考 spring

    • 构造器详细资料

      • ConcurrentReferenceHashMap

        public ConcurrentReferenceHashMap()
        创建一个新的 ConcurrentReferenceHashMap 实例
      • ConcurrentReferenceHashMap

        public ConcurrentReferenceHashMap​(int initialCapacity)
        创建一个新的 ConcurrentReferenceHashMap 实例
        参数:
        initialCapacity - 地图的初始容量
      • ConcurrentReferenceHashMap

        public ConcurrentReferenceHashMap​(int initialCapacity,
                                          float loadFactor)
        创建一个新的 ConcurrentReferenceHashMap 实例
        参数:
        initialCapacity - 地图的初始容量
        loadFactor - 负载系数。当每个表的平均引用数超过此值时,将尝试调整大小
      • ConcurrentReferenceHashMap

        public ConcurrentReferenceHashMap​(int initialCapacity,
                                          int concurrencyLevel)
        创建一个新的 ConcurrentReferenceHashMap 实例
        参数:
        initialCapacity - 地图的初始容量
        concurrencyLevel - 将同时写入映射的预期线程数
      • ConcurrentReferenceHashMap

        public ConcurrentReferenceHashMap​(int initialCapacity,
                                          ConcurrentReferenceHashMap.ReferenceType referenceType)
        创建一个新的 ConcurrentReferenceHashMap 实例
        参数:
        initialCapacity - 地图的初始容量
        referenceType - 用于条目的引用类型(软或弱)
      • ConcurrentReferenceHashMap

        public ConcurrentReferenceHashMap​(int initialCapacity,
                                          float loadFactor,
                                          int concurrencyLevel)
        创建一个新的 ConcurrentReferenceHashMap 实例
        参数:
        initialCapacity - 地图的初始容量
        loadFactor - 负载系数。当每个表的平均引用数超过此值时,将尝试调整大小
        concurrencyLevel - 将同时写入映射的预期线程数
      • ConcurrentReferenceHashMap

        public ConcurrentReferenceHashMap​(int initialCapacity,
                                          float loadFactor,
                                          int concurrencyLevel,
                                          ConcurrentReferenceHashMap.ReferenceType referenceType)
        创建一个新的 ConcurrentReferenceHashMap 实例
        参数:
        initialCapacity - 地图的初始容量
        loadFactor - 负载系数。当每个表的平均引用数超过此值时,将尝试调整大小
        concurrencyLevel - 将同时写入映射的预期线程数
        referenceType - 用于条目的引用类型(软或弱)
    • 方法详细资料

      • getLoadFactor

        protected final float getLoadFactor()
      • getSegmentsSize

        protected final int getSegmentsSize()
      • createReferenceManager

        protected ConcurrentReferenceHashMap.ReferenceManager createReferenceManager()
        返回 ConcurrentReferenceHashMap.ReferenceManager 的工厂方法。此方法将为每个ConcurrentReferenceHashMap.Segment调用一次。
      • getHash

        protected int getHash​(@Nullable
                              @Nullable Object o)
        获取给定对象的哈希值,应用额外的哈希函数以减少冲突。此实现使用与 相同的 ConcurrentHashMapWang/Jenkins 算法。子类可以覆盖以提供替代哈希。 形参:
        参数:
        o - 要哈希的对象(可能为空)
        返回:
        生成的哈希代码.
      • put

        @Nullable
        public V put​(@Nullable
                     K key,
                     @Nullable
                     V value)
        指定者:
        put 在接口中 Map<K,​V>
        覆盖:
        put 在类中 AbstractMap<K,​V>
      • replace

        public boolean replace​(@Nullable
                               K key,
                               @Nullable
                               V oldValue,
                               @Nullable
                               V newValue)
        指定者:
        replace 在接口中 ConcurrentMap<K,​V>
        指定者:
        replace 在接口中 Map<K,​V>
      • purgeUnreferencedEntries

        public void purgeUnreferencedEntries()
        删除任何已被垃圾回收且不再引用的条目。在正常情况下,垃圾回收条目会在地图中添加或删除项目时自动清除。此方法可用于强制清除,当 Map 频繁读取但更新频率较低时非常有用。
      • calculateShift

        protected static int calculateShift​(int minimumValue,
                                            int maximumValue)
        计算可用于在指定的最大值和最小值之间创建 2 次幂值的偏移值。
        参数:
        minimumValue - 最小值
        maximumValue - 最大值
        返回:
        计算的偏移(使用 1 << 偏移 获取值)