Class ReferenceValueMap<K,V>

  extended by java.util.AbstractMap<K,V>
      extended by org.eclipse.net4j.util.ref.ReferenceValueMap2<K,V>
          extended by org.eclipse.net4j.util.ref.ReferenceValueMap<K,V>
All Implemented Interfaces:
ConcurrentMap<K,V>, Map<K,V>
Direct Known Subclasses:
ReferenceValueMap.Soft, ReferenceValueMap.Strong, ReferenceValueMap.Weak

public abstract class ReferenceValueMap<K,V>
extends ReferenceValueMap2<K,V>
implements ConcurrentMap<K,V>

A ConcurrentMap implementation that uses KeyedReference instances (KeyedStrongReference, KeyedSoftReference, KeyedWeakReference or KeyedPhantomReference) as its values.

A ReferenceValueMap can be used to cache mappings until the value of the mapping is no longer reachable from outside of the map

Note: This map is not synchronized. If it is to be used by multiple threads concurrently the user is responsible for applying proper external synchronization!

Nested Class Summary
static class ReferenceValueMap.Soft<K,V>
static class ReferenceValueMap.Strong<K,V>
static class ReferenceValueMap.Weak<K,V>
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
Nested classes/interfaces inherited from interface java.util.Map
Constructor Summary
ReferenceValueMap(ConcurrentMap<K,KeyedReference<K,V>> map)
Method Summary
 V putIfAbsent(K key, V value)
 boolean remove(Object key, Object value)
 V replace(K key, V value)
 boolean replace(K key, V oldValue, V newValue)
Methods inherited from class org.eclipse.net4j.util.ref.ReferenceValueMap2
clear, containsKey, containsValue, createQueue, createReference, dereference, entrySet, get, isEmpty, purged, purgeQueue, put, remove, size
Methods inherited from class java.util.AbstractMap
clone, equals, hashCode, keySet, putAll, toString, values
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Map
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, values

Constructor Detail


public ReferenceValueMap()


public ReferenceValueMap(ConcurrentMap<K,KeyedReference<K,V>> map)
Method Detail


public V putIfAbsent(K key,
                     V value)
Specified by:
putIfAbsent in interface ConcurrentMap<K,V>


public V replace(K key,
                 V value)
Specified by:
replace in interface ConcurrentMap<K,V>


public boolean replace(K key,
                       V oldValue,
                       V newValue)
Specified by:
replace in interface ConcurrentMap<K,V>


public boolean remove(Object key,
                      Object value)
Specified by:
remove in interface ConcurrentMap<K,V>

Copyright (c) 2011, 2012 Eike Stepper (Berlin, Germany) and others.