Class WeakConcurrentMap<K,V>
java.lang.Object
java.lang.ref.ReferenceQueue<K>
com.pnfsoftware.jeb.util.concurrent.WeakConcurrentMap<K,V>
- Direct Known Subclasses:
WeakConcurrentMap.WithInlinedExpunction
public class WeakConcurrentMap<K,V>
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 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.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
AWeakConcurrentMap
where stale entries are removed as a side effect of interacting with this map. -
Field Summary
FieldsModifier and TypeFieldDescriptionfinal ConcurrentMap<com.pnfsoftware.jeb.util.concurrent.WeakConcurrentMap.IWeakKey<K>,
V> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint
Returns the approximate size of this map where the returned number is at least as big as the actual number of entries.void
clear()
Clears the entire map.boolean
containsKey
(K key) protected V
defaultValue
(K key) Creates a default value.void
Cleans all unused references.iterator()
void
run()
Methods inherited from class java.lang.ref.ReferenceQueue
poll, remove, remove
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
target
public final ConcurrentMap<com.pnfsoftware.jeb.util.concurrent.WeakConcurrentMap.IWeakKey<K>,V> target
-
-
Constructor Details
-
WeakConcurrentMap
public WeakConcurrentMap(boolean cleanerThread) - Parameters:
cleanerThread
-true
if a thread should be started that removes stale entries.
-
-
Method Details
-
get
- Parameters:
key
- The key of the entry.- Returns:
- The value of the entry or the default value if it did not exist.
-
containsKey
- Parameters:
key
- The key of the entry.- Returns:
true
if the key already defines a value.
-
put
- Parameters:
key
- The key of the entry.value
- The value of the entry.- Returns:
- The previous entry or
null
if it does not exist.
-
remove
- Parameters:
key
- The key of the entry.- Returns:
- The removed entry or
null
if it does not exist.
-
clear
public void clear()Clears the entire map. -
defaultValue
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.- Parameters:
key
- The key for which to create a default value.- Returns:
- The default value for a key without value or
null
for not defining a default value.
-
getCleanerThread
- Returns:
- The cleaner thread or
null
if no such thread was set.
-
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.- Returns:
- The minimum size of this map.
-
run
public void run() -
iterator
-