Package org.codehaus.groovy.runtime.memoize

# Class ConcurrentSoftCache<K,​V>

java.lang.Object
org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache<K,​java.lang.ref.SoftReference<V>>
org.codehaus.groovy.runtime.memoize.ConcurrentSoftCache<K,​V>

Type Parameters:
  `K` - key type
  `V` - real value type

All Implemented Interfaces:
  `java.io.Serializable`, `java.util.Map<K,​java.lang.ref.SoftReference<V>>`, `EvictableCache<K,​java.lang.ref.SoftReference<V>>`, `MemoizeCache<K,​java.lang.ref.SoftReference<V>>`, `ValueConvertable<java.lang.ref.SoftReference<V>,​java.lang.Object>`

    public class ConcurrentSoftCache<K,​V>
    extends ConcurrentCommonCache<K,​java.lang.ref.SoftReference<V>>

Represents concurrent cache holding SoftReference instance as value

See Also:
  Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface org.codehaus.groovy.runtime.memoize.EvictableCache

  `EvictableCache.Action<K,​V,​R>, EvictableCache.EvictionStrategy`

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

  `java.util.Map.Entry<K extends java.lang.Object,​V extends java.lang.Object>`

  ## Nested classes/interfaces inherited from interface org.codehaus.groovy.runtime.memoize.MemoizeCache

  `MemoizeCache.ValueProvider<K,​V>`

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `ConcurrentSoftCache()` | Constructs a cache with unlimited size
  `ConcurrentSoftCache​(int maxSize)` | Constructs a LRU cache with the default initial capacity(16)
  `ConcurrentSoftCache​(int initialCapacity, int maxSize)` | Constructs a LRU cache with the specified initial capacity and max size.
  `ConcurrentSoftCache​(int initialCapacity, int maxSize, EvictableCache.EvictionStrategy evictionStrategy)` | Constructs a cache with limited size
  `ConcurrentSoftCache​(java.util.Map<K,​java.lang.ref.SoftReference<V>> map)` | Constructs a cache backed by the specified `Map` instance

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `java.lang.Object` | `convertValue​(java.lang.ref.SoftReference<V> value)` | convert the original value to the target value

  ### Methods inherited from class org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache

  `cleanUpNullReferences, clearAll, containsKey, containsValue, entrySet, get, getAndPut, getAndPut, isEmpty, keys, keySet, put, putAll, remove, size, values`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.codehaus.groovy.runtime.memoize.EvictableCache

  `clear`

  ### Methods inherited from interface java.util.Map

  `compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll`

- ## Constructor Details

  - ### ConcurrentSoftCache

    public ConcurrentSoftCache()
    Constructs a cache with unlimited size

  - ### ConcurrentSoftCache

    public ConcurrentSoftCache​(int initialCapacity, int maxSize, EvictableCache.EvictionStrategy evictionStrategy)
    Constructs a cache with limited size
    Parameters:
      `initialCapacity` - initial capacity of the cache
      `maxSize` - max size of the cache
      `evictionStrategy` - LRU or FIFO, see `EvictableCache.EvictionStrategy`

  - ### ConcurrentSoftCache

    public ConcurrentSoftCache​(int initialCapacity, int maxSize)
    Constructs a LRU cache with the specified initial capacity and max size. The LRU cache is slower than `LRUCache`
    Parameters:
      `initialCapacity` - initial capacity of the LRU cache
      `maxSize` - max size of the LRU cache

  - ### ConcurrentSoftCache

    public ConcurrentSoftCache​(int maxSize)
    Constructs a LRU cache with the default initial capacity(16)
    Parameters:
      `maxSize` - max size of the LRU cache
    See Also:
      `ConcurrentSoftCache(int, int)`

  - ### ConcurrentSoftCache

    public ConcurrentSoftCache​(java.util.Map<K,​java.lang.ref.SoftReference<V>> map)
    Constructs a cache backed by the specified `Map` instance
    Parameters:
      `map` - the `Map` instance

- ## Method Details

  - ### convertValue

    public java.lang.Object convertValue​(java.lang.ref.SoftReference<V> value)
    convert the original value to the target value
    Specified by:
      `convertValue` in interface `ValueConvertable<K,​V>`
    Overrides:
      `convertValue` in class `ConcurrentCommonCache<K,​java.lang.ref.SoftReference<V>>`
    Parameters:
      `value` - the original value
    Returns:
      the converted value