edu.emory.mathcs.util.concurrent
Interface ConcurrentMap

All Superinterfaces:
java.util.Map
All Known Implementing Classes:
ConcurrentHashMap

public interface ConcurrentMap
extends java.util.Map

A Map providing additional atomic putIfAbsent, remove, and replace methods.

This interface is a member of the Java Collections Framework.

Since:
1.5

Method Summary
 java.lang.Object putIfAbsent(java.lang.Object key, java.lang.Object value)
          If the specified key is not already associated with a value, associate it with the given value.
 boolean remove(java.lang.Object key, java.lang.Object value)
          Remove entry for key only if currently mapped to given value.
 java.lang.Object replace(java.lang.Object key, java.lang.Object value)
          Replace entry for key only if currently mapped to some value.
 boolean replace(java.lang.Object key, java.lang.Object oldValue, java.lang.Object newValue)
          Replace entry for key only if currently mapped to given value.
 
Methods inherited from interface java.util.Map
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, values
 

Method Detail

putIfAbsent

public java.lang.Object putIfAbsent(java.lang.Object key,
                                    java.lang.Object value)
If the specified key is not already associated with a value, associate it with the given value. This is equivalent to
   if (!map.containsKey(key))
      return map.put(key, value);
   else
      return map.get(key);
 
Except that the action is performed atomically.

Parameters:
key - key with which the specified value is to be associated.
value - value to be associated with the specified key.
Returns:
previous value associated with specified key, or null if there was no mapping for key. A null return can also indicate that the map previously associated null with the specified key, if the implementation supports null values.
Throws:
java.lang.UnsupportedOperationException - if the put operation is not supported by this map.
java.lang.ClassCastException - if the class of the specified key or value prevents it from being stored in this map.
java.lang.IllegalArgumentException - if some aspect of this key or value prevents it from being stored in this map.
java.lang.NullPointerException - if this map does not permit null keys or values, and the specified key or value is null.

remove

public boolean remove(java.lang.Object key,
                      java.lang.Object value)
Remove entry for key only if currently mapped to given value. Acts as
  if ((map.containsKey(key) && map.get(key).equals(value)) {
     map.remove(key);
     return true;
 } else return false;
 
except that the action is performed atomically.

Parameters:
key - key with which the specified value is associated.
value - value associated with the specified key.
Returns:
true if the value was removed, false otherwise
Throws:
java.lang.UnsupportedOperationException - if the remove operation is not supported by this map.
java.lang.NullPointerException - if this map does not permit null keys or values, and the specified key or value is null.

replace

public boolean replace(java.lang.Object key,
                       java.lang.Object oldValue,
                       java.lang.Object newValue)
Replace entry for key only if currently mapped to given value. Acts as
  if ((map.containsKey(key) && map.get(key).equals(oldValue)) {
     map.put(key, newValue);
     return true;
 } else return false;
 
except that the action is performed atomically.

Parameters:
key - key with which the specified value is associated.
oldValue - value expected to be associated with the specified key.
newValue - value to be associated with the specified key.
Returns:
true if the value was replaced
Throws:
java.lang.UnsupportedOperationException - if the put operation is not supported by this map.
java.lang.NullPointerException - if this map does not permit null keys or values, and the specified key or value is null.

replace

public java.lang.Object replace(java.lang.Object key,
                                java.lang.Object value)
Replace entry for key only if currently mapped to some value. Acts as
  if ((map.containsKey(key)) {
     return map.put(key, value);
 } else return null;
 
except that the action is performed atomically.

Parameters:
key - key with which the specified value is associated.
value - value to be associated with the specified key.
Returns:
previous value associated with specified key, or null if there was no mapping for key. A null return can also indicate that the map previously associated null with the specified key, if the implementation supports null values.
Throws:
java.lang.UnsupportedOperationException - if the put operation is not supported by this map.
java.lang.NullPointerException - if this map does not permit null keys or values, and the specified key or value is null.