Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## edu.emory.mathcs.backport.java.util.concurrent
Interface ConcurrentMap

All Superinterfaces:
  java.util.Map

All Known Subinterfaces:
  ConcurrentNavigableMap

All Known Implementing Classes:
  edu.emory.mathcs.util.collections.AsyncWeakValueMap, ConcurrentHashMap, ConcurrentSkipListMap

public interface ConcurrentMap
extends java.util.Map

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

Memory consistency effects: As with other concurrent collections, actions in a thread prior to placing an object into a as a key or value happen-before actions subsequent to the access or removal of that object from the in another thread.

This interface is a member of the Java Collections Framework.

Since:
  1.5
Author:
  Doug Lea

Nested Class Summary

Nested classes inherited from class java.util.Map
`java.util.Map.Entry`

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)` Removes the entry for a key only if currently mapped to a given value.
`java.lang.Object` | `replace(java.lang.Object key, java.lang.Object value)` Replaces the entry for a key only if currently mapped to some value.
`boolean` | `replace(java.lang.Object key, java.lang.Object oldValue, java.lang.Object newValue)` Replaces the entry for a key only if currently mapped to a 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:
    the previous value associated with the specified key, or `null` if there was no mapping for the key. (A `null` return can also indicate that the map previously associated `null` with the 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.NullPointerException` - if the specified key or value is null, and this map does not permit null keys or values
    `java.lang.IllegalArgumentException` - if some property of the specified key or value prevents it from being stored in this map

### remove

    public boolean remove(java.lang.Object key,
                          java.lang.Object value)

  Removes the entry for a key only if currently mapped to a given value. This is equivalent to

         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 expected to be associated with the specified key
  Returns:
    `true` if the value was removed
  Throws:
    `java.lang.UnsupportedOperationException` - if the `remove` operation is not supported by this map
    `java.lang.ClassCastException` - if the key or value is of an inappropriate type for this map (optional)
    `java.lang.NullPointerException` - if the specified key or value is null, and this map does not permit null keys or values (optional)

### replace

    public boolean replace(java.lang.Object key,
                           java.lang.Object oldValue,
                           java.lang.Object newValue)

  Replaces the entry for a key only if currently mapped to a given value. This is equivalent to

         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.ClassCastException` - if the class of a specified key or value prevents it from being stored in this map
    `java.lang.NullPointerException` - if a specified key or value is null, and this map does not permit null keys or values
    `java.lang.IllegalArgumentException` - if some property of a specified key or value prevents it from being stored in this map

### replace

    public java.lang.Object replace(java.lang.Object key,
                                    java.lang.Object value)

  Replaces the entry for a key only if currently mapped to some value. This is equivalent to

         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:
    the previous value associated with the specified key, or `null` if there was no mapping for the key. (A `null` return can also indicate that the map previously associated `null` with the 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.NullPointerException` - if the specified key or value is null, and this map does not permit null keys or values
    `java.lang.IllegalArgumentException` - if some property of the specified key or value prevents it from being stored in this map

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD