类 AbstractWeakConcurrentMap<K,V,L>

java.lang.Object
java.lang.ref.ReferenceQueue<K>
com.tlcsdm.core.concurrent.AbstractWeakConcurrentMap<K,V,L>
所有已实现的接口:
Iterable<Map.Entry<K,V>>, Runnable
直接已知子类:
WeakConcurrentMap

public abstract class AbstractWeakConcurrentMap<K,V,L> extends ReferenceQueue<K> implements Runnable, Iterable<Map.Entry<K,V>>

A thread-safe map with weak keys. Entries are based on a key's system hash code and keys are considered equal only by reference equality. This class offers an abstract-base implementation that allows to override methods.

This class does not implement the Map interface because this implementation is incompatible with the map contract. While iterating over a map's entries, any key that has not passed iteration is referenced non-weakly.
作者:
unknowIfGuestInDream
  • 字段详细资料

  • 构造器详细资料

    • AbstractWeakConcurrentMap

      protected AbstractWeakConcurrentMap()
    • AbstractWeakConcurrentMap

      protected AbstractWeakConcurrentMap(ConcurrentMap<AbstractWeakConcurrentMap.WeakKey<K>,V> target)
      参数:
      target - ConcurrentMap implementation that this class wraps.
  • 方法详细资料

    • getLookupKey

      protected abstract L getLookupKey(K key)
      Override with care as it can cause lookup failures if done incorrectly. The result must have the same Object.hashCode() as the input and be equal to a weak reference of the key. When overriding this, also override resetLookupKey(L).
    • resetLookupKey

      protected abstract void resetLookupKey(L lookupKey)
      Resets any reusable state in the lookup key.
    • get

      public V get(K key)
      参数:
      key - The key of the entry.
      返回:
      The value of the entry or the default value if it did not exist.
    • getIfPresent

      public V getIfPresent(K key)
      参数:
      key - The key of the entry.
      返回:
      The value of the entry or null if it did not exist.
    • containsKey

      public boolean containsKey(K key)
      参数:
      key - The key of the entry.
      返回:
      true if the key already defines a value.
    • put

      public V put(K key, V value)
      参数:
      key - The key of the entry.
      value - The value of the entry.
      返回:
      The previous entry or null if it does not exist.
    • putIfAbsent

      public V putIfAbsent(K key, V value)
      参数:
      key - The key of the entry.
      value - The value of the entry.
      返回:
      The previous entry or null if it does not exist.
    • putIfProbablyAbsent

      public V putIfProbablyAbsent(K key, V value)
      参数:
      key - The key of the entry.
      value - The value of the entry.
      返回:
      The previous entry or null if it does not exist.
    • remove

      public V remove(K key)
      参数:
      key - The key of the entry.
      返回:
      The removed entry or null if it does not exist.
    • clear

      public void clear()
      Clears the entire map.
    • defaultValue

      protected V defaultValue(K key)
      Creates a default value. There is no guarantee that the requested value will be set as a once it is created in case that another thread requests a value for a key concurrently.
      参数:
      key - The key for which to create a default value.
      返回:
      The default value for a key without value or null for not defining a default value.
    • expungeStaleEntries

      public void expungeStaleEntries()
      Cleans all unused references.
    • approximateSize

      public int approximateSize()
      Returns the approximate size of this map where the returned number is at least as big as the actual number of entries.
      返回:
      The minimum size of this map.
    • run

      public void run()
      指定者:
      run 在接口中 Runnable
    • iterator

      public Iterator<Map.Entry<K,V>> iterator()
      指定者:
      iterator 在接口中 Iterable<K>
    • toString

      public String toString()
      覆盖:
      toString 在类中 Object