Package org.simpleframework.xml.util
Class WeakCache<T>
java.lang.Object
org.simpleframework.xml.util.WeakCache<T>
- All Implemented Interfaces:
Cache<T>
- Direct Known Subclasses:
ReadState
,WriteState
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.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate class
The segment is effectively a synchronized weak hash map.private class
This is used to maintain a list of segments. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate WeakCache<T>.SegmentList
This is used to store a list of segments for the cache. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
This method is used to insert a key value mapping in to the cache.boolean
This is used to determine whether the specified key exists with in the cache.This method is used to get the value from the cache that is mapped to the specified key.boolean
isEmpty()
This method is used to determine if the cache is empty.This method is used to acquire aSegment
using the keys has code.This is used to exclusively take the value mapped to the specified key from the cache.
-
Field Details
-
list
This is used to store a list of segments for the cache.
-
-
Constructor Details
-
WeakCache
public WeakCache()Constructor for theWeakCache
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 theWeakCache
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 Details
-
isEmpty
public boolean isEmpty()Description copied from interface:Cache
This method is used to determine if the cache is empty. This is done by checking if there are any elements in the cache. If anything has been cached this will return false. -
cache
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. -
take
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. -
fetch
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. -
contains
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. -
map
This method is used to acquire aSegment
using the keys has code. This method effectively uses the hash to find a specific segment within the fixed list of segments.- Parameters:
key
- this is the key used to acquire the segment- Returns:
- this returns the segment used to get acquire value
-