Class WeakHashLRUImpl<K>
java.lang.Object
org.glassfish.hk2.utilities.general.internal.WeakHashLRUImpl<K>
- All Implemented Interfaces:
WeakHashLRU<K>
An implementation of the WeakHashLRU as needed by the CAR algorithm
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final WeakHashMap
<K, DoubleNode<K, Object>> private final ConcurrentHashMap
<K, DoubleNode<K, Object>> private final boolean
private DoubleNode
<K, Object> private DoubleNode
<K, Object> private final ReferenceQueue
<? super K> private static final Object
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds the given key to the LRU.private DoubleNode
<K, Object> void
clear()
Removes all entries from this LRUprivate void
void
Causes stale references to be cleared from the data structures.boolean
Tells if the given key is in the LRUvoid
releaseMatching
(CacheKeyFilter<K> filter) Releases all keys that match the filterremove()
Removes the key that was Least Recently Usedboolean
Removes the given key from the LRU, if foundprivate K
remove
(DoubleNode<K, Object> removeMe) private boolean
removeNoClear
(K key) int
size()
Returns the number of elements currently in the clock.toString()
-
Field Details
-
VALUE
-
isWeak
private final boolean isWeak -
byKey
-
byKeyNotWeak
-
myQueue
-
mru
-
lru
-
-
Constructor Details
-
WeakHashLRUImpl
public WeakHashLRUImpl(boolean isWeak)
-
-
Method Details
-
addToHead
-
remove
-
add
Description copied from interface:WeakHashLRU
Adds the given key to the LRU. It will be placed at the MRU of the LRU. If this key already exists in the LRU it will be moved to the MRU- Specified by:
add
in interfaceWeakHashLRU<K>
- Parameters:
key
- Must not be null
-
contains
Description copied from interface:WeakHashLRU
Tells if the given key is in the LRU- Specified by:
contains
in interfaceWeakHashLRU<K>
- Parameters:
key
- The key to search for, may not be null- Returns:
- true if found, false otherwise
-
remove
Description copied from interface:WeakHashLRU
Removes the given key from the LRU, if found- Specified by:
remove
in interfaceWeakHashLRU<K>
- Parameters:
key
- The key to remove, may not be null- Returns:
- true if removed, false otherwise
-
removeNoClear
-
size
public int size()Description copied from interface:WeakHashLRU
Returns the number of elements currently in the clock. References that have gone away because they were weakly referenced will not be counted in the size- Specified by:
size
in interfaceWeakHashLRU<K>
- Returns:
- The number of entries currently in the LRU
-
remove
Description copied from interface:WeakHashLRU
Removes the key that was Least Recently Used- Specified by:
remove
in interfaceWeakHashLRU<K>
- Returns:
- The key that was removed, or null if the list is empty
-
releaseMatching
Description copied from interface:WeakHashLRU
Releases all keys that match the filter- Specified by:
releaseMatching
in interfaceWeakHashLRU<K>
- Parameters:
filter
- A non-null filter that can be used to delete every key that matches the filter
-
clear
public void clear()Description copied from interface:WeakHashLRU
Removes all entries from this LRU- Specified by:
clear
in interfaceWeakHashLRU<K>
-
clearStaleReferences
public void clearStaleReferences()Description copied from interface:WeakHashLRU
Causes stale references to be cleared from the data structures. Since this is a weak clock the references can go away at any time, which happens whenever any operation has been performed. However, it may be the case that no operation will be performed for a while and so this method is provided to have a no-op operation to call in order to clear out any stale references- Specified by:
clearStaleReferences
in interfaceWeakHashLRU<K>
-
clearStale
private void clearStale() -
toString
-