org.simpleframework.xml.util
Class WeakCache<K,V>

java.lang.Object
  extended by org.simpleframework.xml.util.WeakCache<K,V>
All Implemented Interfaces:
Cache<K,V>

public class WeakCache<K,V>
extends java.lang.Object
implements Cache<K,V>

The WeakCache object is an implementation of a cache that holds on to cached items only if the key remains in memory. This is effectively like a concurrent hash map with weak keys, it ensures that multiple threads can concurrently access weak hash maps in a way that lowers contention for the locks used.

Author:
Niall Gallagher

Constructor Summary
WeakCache()
          Constructor for the WeakCache object.
WeakCache(int size)
          Constructor for the WeakCache object.
 
Method Summary
 void cache(K key, V value)
          This method is used to insert a key value mapping in to the cache.
 boolean contains(K key)
          This is used to determine whether the specified key exists with in the cache.
 V fetch(K key)
          This method is used to get the value from the cache that is mapped to the specified key.
 V take(K key)
          This is used to exclusively take the value mapped to the specified key from the cache.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WeakCache

public WeakCache()
Constructor for the WeakCache object. This is used to create a cache that stores values in such a way that when the key is garbage collected the value is removed from the map. This is similar to the concurrent hash map.


WeakCache

public WeakCache(int size)
Constructor for the WeakCache object. This is used to create a cache that stores values in such a way that when the key is garbage collected the value is removed from the map. This is similar to the concurrent hash map.

Parameters:
size - this is the number of segments within the cache
Method Detail

cache

public void cache(K key,
                  V value)
This method is used to insert a key value mapping in to the cache. The value can later be retrieved or removed from the cache if desired. If the value associated with the key is null then nothing is stored within the cache.

Specified by:
cache in interface Cache<K,V>
Parameters:
key - this is the key to cache the provided value to
value - this is the value that is to be cached

take

public V take(K key)
This is used to exclusively take the value mapped to the specified key from the cache. Invoking this is effectively removing the value from the cache.

Specified by:
take in interface Cache<K,V>
Parameters:
key - this is the key to acquire the cache value with
Returns:
this returns the value mapped to the specified key

fetch

public V fetch(K key)
This method is used to get the value from the cache that is mapped to the specified key. If there is no value mapped to the specified key then this method will return a null.

Specified by:
fetch in interface Cache<K,V>
Parameters:
key - this is the key to acquire the cache value with
Returns:
this returns the value mapped to the specified key

contains

public boolean contains(K key)
This is used to determine whether the specified key exists with in the cache. Typically this can be done using the fetch method, which will acquire the object.

Specified by:
contains in interface Cache<K,V>
Parameters:
key - this is the key to check within this segment
Returns:
true if the specified key is within the cache