K - the key typeV - the value typeCopyOnWriteMap instead as
it has some important features and some bug fixes. This version
is no longer maintained.@Deprecated public abstract class CopyOnWriteMap<K,V> extends com.atlassian.util.concurrent.CopyOnWriteMap<K,V>
Map in which all mutative operations (the
"destructive" operations described by Map put, remove and so on) are
implemented by making a fresh copy of the underlying map.
This is ordinarily too costly, but may be more efficient than
alternatives when traversal operations vastly out-number mutations, and is
useful when you cannot or don't want to synchronize traversals, yet need to
preclude interference among concurrent threads. The "snapshot" style
iterators on the collections returned by entrySet(),
keySet() and values() use a reference to the internal map
at the point that the iterator was created. This map never changes during the
lifetime of the iterator, so interference is impossible and the iterator is
guaranteed not to throw ConcurrentModificationException. The
iterators will not reflect additions, removals, or changes to the list since
the iterator was created. Removing elements via these iterators is not
supported. The mutable operations on these collections (remove, retain etc.)
are supported but as with the Map interface, add and addAll are not
and throw UnsupportedOperationException.
The actual copy is performed by an abstract CopyOnWriteMap.copy(Map) method. The
method is responsible for the underlying Map implementation (for instance a
HashMap, TreeMap, LinkedHashMap etc.) and therefore
the semantics of what this map will cope with as far as null keys and values,
iteration ordering etc. See the note below about suitable candidates for
underlying Map implementations
There are supplied implementations for the common Collections Map
implementations via the CopyOnWriteMaps static factory methods.
Collection views of the keys, values and entries are modifiable and will cause a copy.
Please note that the thread-safety guarantees are limited to
the thread-safety of the non-mutative (non-destructive) operations of the
underlying map implementation. For instance some implementations such as
WeakHashMap and LinkedHashMap with access ordering are
actually structurally modified by the get(Object) method and are
therefore not suitable candidates as delegates for this class.
| Modifier and Type | Class and Description |
|---|---|
protected static class |
com.atlassian.util.concurrent.AbstractCopyOnWriteMap.CollectionView<E> |
static class |
com.atlassian.util.concurrent.AbstractCopyOnWriteMap.View<K,V> |
| Constructor and Description |
|---|
CopyOnWriteMap()
Deprecated.
Create a new empty
CopyOnWriteMap. |
CopyOnWriteMap(Map<? extends K,? extends V> map)
Deprecated.
Create a new
CopyOnWriteMap with the supplied Map to
initialize the values. |
| Modifier and Type | Method and Description |
|---|---|
void |
clear() |
boolean |
containsKey(Object arg0) |
boolean |
containsValue(Object arg0) |
protected M |
copy() |
Set<Map.Entry<K,V>> |
entrySet() |
boolean |
equals(Object arg0) |
V |
get(Object arg0) |
protected M |
getDelegate() |
int |
hashCode() |
boolean |
isEmpty() |
Set<K> |
keySet() |
static <K,V> CopyOnWriteMap<K,V> |
newHashMap()
Deprecated.
Creates a new
CopyOnWriteMap with an underlying HashMap. |
static <K,V> CopyOnWriteMap<K,V> |
newHashMap(Map<? extends K,? extends V> map)
Deprecated.
Creates a new
CopyOnWriteMap with an underlying HashMap
using the supplied map as the initial values. |
static <K,V> CopyOnWriteMap<K,V> |
newLinkedMap()
Deprecated.
Creates a new
CopyOnWriteMap with an underlying
LinkedHashMap. |
static <K,V> CopyOnWriteMap<K,V> |
newLinkedMap(Map<? extends K,? extends V> map)
Deprecated.
Creates a new
CopyOnWriteMap with an underlying
LinkedHashMap using the supplied map as the initial values. |
V |
put(K arg0,
V arg1) |
void |
putAll(Map<? extends K,? extends V> arg0) |
V |
remove(Object arg0) |
protected void |
set(M arg0) |
int |
size() |
Collection<V> |
values() |
public CopyOnWriteMap(Map<? extends K,? extends V> map)
CopyOnWriteMap with the supplied Map to
initialize the values.map - the initial map to initialize withpublic CopyOnWriteMap()
CopyOnWriteMap.public static <K,V> CopyOnWriteMap<K,V> newHashMap()
CopyOnWriteMap with an underlying HashMap.public static <K,V> CopyOnWriteMap<K,V> newHashMap(Map<? extends K,? extends V> map)
CopyOnWriteMap with an underlying HashMap
using the supplied map as the initial values.public static <K,V> CopyOnWriteMap<K,V> newLinkedMap()
CopyOnWriteMap with an underlying
LinkedHashMap. Iterators for this map will be return elements in
insertion order.public static <K,V> CopyOnWriteMap<K,V> newLinkedMap(Map<? extends K,? extends V> map)
CopyOnWriteMap with an underlying
LinkedHashMap using the supplied map as the initial values.
Iterators for this map will be return elements in insertion order.public final void putAll(Map<? extends K,? extends V> arg0)
protected M copy()
protected void set(M arg0)
public final Collection<V> values()
public final boolean containsKey(Object arg0)
containsKey in interface Map<K,V>public final boolean containsValue(Object arg0)
containsValue in interface Map<K,V>public final boolean equals(Object arg0)
public final int hashCode()
protected final M getDelegate()
Copyright © 2014 Atlassian. All rights reserved.