Class WeakConcurrentHashMap<K,​V>

  • Type Parameters:
    K - the type of keys maintained by this map
    V - the type of mapped values
    All Implemented Interfaces:
    java.util.concurrent.ConcurrentMap<K,​V>, java.util.Map<K,​V>

    public class WeakConcurrentHashMap<K,​V>
    extends java.lang.Object
    implements java.util.concurrent.ConcurrentMap<K,​V>
    A thread-safe, concurrent Map implementation with weak keys.

    This implementation is designed for high-concurrency environments: it relies on lock-free data structures (ConcurrentHashMap) and a single global scheduled task for cleanup, avoiding synchronized blocks and explicit locks on all critical paths.

    • Nested Class Summary

      • Nested classes/interfaces inherited from interface java.util.Map

        java.util.Map.Entry<K extends java.lang.Object,​V extends java.lang.Object>
    • Constructor Summary

      Constructors 
      Constructor Description
      WeakConcurrentHashMap()
      Creates a new WeakConcurrentHashMap and registers it for global cleanup.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void clear()
      boolean containsKey​(java.lang.Object key)
      boolean containsValue​(java.lang.Object value)
      @NotNull java.util.Set<java.util.Map.Entry<K,​V>> entrySet()
      V get​(java.lang.Object key)
      boolean isEmpty()
      @NotNull java.util.Set<K> keySet()
      V put​(K key, V value)
      void putAll​(@NotNull java.util.Map<? extends K,​? extends V> m)
      V putIfAbsent​(K key, V value)
      boolean remove​(@NotNull java.lang.Object key, java.lang.Object value)
      V remove​(java.lang.Object key)
      V replace​(K key, V value)
      boolean replace​(K key, V oldValue, V newValue)
      static void shutdownGlobalCleaner()
      Shuts down the global scheduled cleaner task.
      int size()
      @NotNull java.util.Collection<V> values()
      The returned collection contains strong references to the values.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.concurrent.ConcurrentMap

        compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, replaceAll
      • Methods inherited from interface java.util.Map

        equals, hashCode
    • Constructor Detail

      • WeakConcurrentHashMap

        public WeakConcurrentHashMap()
        Creates a new WeakConcurrentHashMap and registers it for global cleanup.
    • Method Detail

      • put

        public V put​(@NotNull
                     K key,
                     V value)
        Specified by:
        put in interface java.util.Map<K,​V>
      • get

        public V get​(java.lang.Object key)
        Specified by:
        get in interface java.util.Map<K,​V>
      • remove

        public V remove​(java.lang.Object key)
        Specified by:
        remove in interface java.util.Map<K,​V>
      • size

        public int size()
        Specified by:
        size in interface java.util.Map<K,​V>
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface java.util.Map<K,​V>
      • containsKey

        public boolean containsKey​(java.lang.Object key)
        Specified by:
        containsKey in interface java.util.Map<K,​V>
      • containsValue

        public boolean containsValue​(java.lang.Object value)
        Specified by:
        containsValue in interface java.util.Map<K,​V>
      • putIfAbsent

        public V putIfAbsent​(@NotNull
                             K key,
                             V value)
        Specified by:
        putIfAbsent in interface java.util.concurrent.ConcurrentMap<K,​V>
        Specified by:
        putIfAbsent in interface java.util.Map<K,​V>
      • remove

        public boolean remove​(@NotNull
                              @NotNull java.lang.Object key,
                              java.lang.Object value)
        Specified by:
        remove in interface java.util.concurrent.ConcurrentMap<K,​V>
        Specified by:
        remove in interface java.util.Map<K,​V>
      • replace

        public boolean replace​(@NotNull
                               K key,
                               @NotNull
                               V oldValue,
                               @NotNull
                               V newValue)
        Specified by:
        replace in interface java.util.concurrent.ConcurrentMap<K,​V>
        Specified by:
        replace in interface java.util.Map<K,​V>
      • replace

        public V replace​(@NotNull
                         K key,
                         @NotNull
                         V value)
        Specified by:
        replace in interface java.util.concurrent.ConcurrentMap<K,​V>
        Specified by:
        replace in interface java.util.Map<K,​V>
      • putAll

        public void putAll​(@NotNull
                           @NotNull java.util.Map<? extends K,​? extends V> m)
        Specified by:
        putAll in interface java.util.Map<K,​V>
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Map<K,​V>
      • keySet

        @NotNull
        public @NotNull java.util.Set<K> keySet()

        The set is backed by the map. The iterator filters out keys that have been garbage collected ("dead" entries).

        Specified by:
        keySet in interface java.util.Map<K,​V>
      • values

        @NotNull
        public @NotNull java.util.Collection<V> values()
        The returned collection contains strong references to the values.
        Specified by:
        values in interface java.util.Map<K,​V>
      • entrySet

        @NotNull
        public @NotNull java.util.Set<java.util.Map.Entry<K,​V>> entrySet()

        The set is backed by the map. The iterator filters out entries whose keys have been garbage collected.

        Specified by:
        entrySet in interface java.util.Map<K,​V>
      • shutdownGlobalCleaner

        public static void shutdownGlobalCleaner()
        Shuts down the global scheduled cleaner task. This method should be called only once when the application exits.