class AutoExpireMap<K,V> extends Object
Modifier and Type | Class and Description |
---|---|
private static class |
AutoExpireMap.MyReference
WeakReference-Implementierung, die sich den Key merkt
|
Modifier and Type | Field and Description |
---|---|
private ConcurrentHashMap<K,Object> |
_delegate |
private int |
_maxSize |
private ReferenceQueue<V> |
_queue |
private static Timer |
_timer |
Constructor and Description |
---|
AutoExpireMap() |
Modifier and Type | Method and Description |
---|---|
void |
clear()
Leert die Map
|
boolean |
containsKey(Object key) |
void |
expire(K key,
V val,
long timeout)
Sorgt dafür, dass ein Eintrag nach einer Zeit durch eine WeakReference ersetzt wird
|
void |
expireNow(K key,
V val)
Sorgt dafür, dass ein Eintrag sofort durch eine WeakReference ersetzt wird
|
V |
get(Object key) |
boolean |
isEmpty() |
Set<K> |
keySet()
Gibt alle Keys zurück.
|
V |
put(K key,
V value) |
private void |
rehash() |
V |
remove(Object key)
Entfernt einen Eintrag sofort
|
int |
size() |
private V |
unpack(Object ref)
Löst bei Bedarf WeakReferences auf, die gemischt mit normalen Objekten in der Map gespeichert sind
|
private void |
update()
Arbeitet die ReferenceQueue ab um abgeräumte Einträge zu entfernen, Triggert falls nötig einen rehash()
|
Collection<V> |
values()
Gibt eine Kopie der enthaltenen Werte zurück.
|
private ConcurrentHashMap<K,Object> _delegate
private ReferenceQueue<V> _queue
private static final Timer _timer
private int _maxSize
public void clear()
public V remove(Object key)
key
- Keyprivate V unpack(Object ref)
ref
- Objekt oder Weakreferencepublic V put(K key, V value)
Map.put(Object, Object)
public V get(Object key)
Map.get(Object)
public boolean containsKey(Object key)
Map.containsKey(Object)
public boolean isEmpty()
Map.isEmpty()
public int size()
()
private void update()
private void rehash()
public Set<K> keySet()
public Collection<V> values()
public void expire(K key, V val, long timeout)
key
- Key des Eintragsval
- Wert des Eintrags (muss angegeben werden um sicherzustellen, dass nicht zwischenzeitlich der Wert geändert wurde und dann
irrtümlich entfernt wird, vgl. compareAndSwap-Technik)timeout
- Anzahl Millisekunden, nach der der Eintrag ersetzt wird (> 0)public void expireNow(K key, V val)
key
- Key des Eintragsval
- Wert des Eintrags (muss angegeben werden um sicherzustellen, dass nicht zwischenzeitlich der Wert geändert wurde und dann
irrtümlich entfernt wird, vgl. compareAndSwap-Technik)