|
CoherenceTM v3.3 Copyright© 2000-2007 by Oracle Corporation |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.tangosol.util.Base
com.tangosol.util.AbstractKeyBasedMap
com.tangosol.util.AbstractKeySetBasedMap
com.tangosol.util.WrapperObservableMap
com.tangosol.util.WrapperConcurrentMap
public class WrapperConcurrentMap
A simple implementation of ConcurrentMap interface built as a wrapper around any Map implementation. As a subclass of WrapperObservableMap, it naturally implements the ObservableMap interface and provides an implementation of CacheStatistics interface.
Nested Class Summary | |
---|---|
protected static class |
WrapperConcurrentMap.Lock
A lock object. |
Nested classes/interfaces inherited from class com.tangosol.util.WrapperObservableMap |
---|
WrapperObservableMap.InternalListener |
Nested classes/interfaces inherited from class com.tangosol.util.AbstractKeySetBasedMap |
---|
AbstractKeySetBasedMap.EntrySet, AbstractKeySetBasedMap.KeyIterator, AbstractKeySetBasedMap.KeySet, AbstractKeySetBasedMap.ValuesCollection |
Nested classes/interfaces inherited from interface java.util.Map |
---|
Map.Entry |
Field Summary | |
---|---|
protected long |
m_cWaitMillis
The number of milliseconds to continue trying to obtain a lock in case when the locking is enforced. |
protected boolean |
m_fEnforceLocking
Flag indicating whether or not the locking is enforced for put, remove and clear operations. |
protected ThreadGate |
m_gateMap
The ThreadGate object for the entire map. |
protected SafeHashMap |
m_mapLock
The map containing all the locks. |
Fields inherited from class com.tangosol.util.WrapperObservableMap |
---|
m_listenerInternal, m_listenerSupport, m_map, m_stats |
Fields inherited from interface com.tangosol.util.ConcurrentMap |
---|
LOCK_ALL |
Constructor Summary | |
---|---|
WrapperConcurrentMap(Map map)
Construct a ConcurrentMap wrapper based on the specified map with locking enforced for put, remove and clear operations. |
|
WrapperConcurrentMap(Map map,
boolean fEnforceLocking,
long cWaitMillis)
Construct a ConcurrentMap wrapper based on the specified map. |
Method Summary | |
---|---|
void |
clear()
Clear all key/value mappings. |
protected String |
getDescription()
Assemble a human-readable description. |
String |
getLockDescription(Object oKey)
Make a human-readable description of the information kept about the passed key. |
long |
getWaitMillis()
Return the number of milliseconds to continue trying to obtain a lock in case when the locking is enforced. |
protected WrapperConcurrentMap.Lock |
instantiateLock(Object oKey)
Factory pattern. |
protected boolean |
isInternalKeySetIteratorMutable()
Determine if this Iterator should remove an iterated item by calling remove on the internal key Set Iterator, or by calling removeBlind on the map itself. |
boolean |
isLockingEnforced()
Obtain the flag indicatinig whether or not the locking is enforced for put, remove and clear operations. |
boolean |
lock(Object oKey)
Attempt to lock the specified item and return immediately. |
boolean |
lock(Object oKey,
long cWait)
Attempt to lock the specified item within the specified period of time. |
Object |
put(Object oKey,
Object oValue)
Associates the specified value with the specified key in this map. |
void |
putAll(Map map)
Copies all of the mappings from the specified map to this map. The effect of this call is equivalent to that of calling AbstractKeyBasedMap.put(java.lang.Object, java.lang.Object)
on this map once for each mapping in the passed map. The behavior of
this operation is unspecified if the passed map is modified while the
operation is in progress. |
Object |
remove(Object oKey)
Removes the mapping for this key from this map if present. Expensive: updates both the underlying cache and the local cache. |
protected boolean |
removeBlind(Object oKey)
Removes the mapping for this key from this map if present. This method exists to allow sub-classes to optmiize remove functionalitly for situations in which the original value is not required. |
void |
setLockingEnforced(boolean fEnforce)
Set the flag indicatinig whether or not the locking is enforced for put, remove and clear operations. |
void |
setWaitMillis(long cWaitMillis)
Specifiy the number of milliseconds to continue trying to obtain a lock in case when the locking is enforced. |
String |
toString()
Returns a string representation of this Map. The string representation consists of a list of key-value mappings in the order returned by the Map's entrySet view's iterator, enclosed in braces ("{}"). Adjacent mappings are separated by the characters ", " (comma and space). Each key-value mapping is rendered as the key followed by an equals sign ("=") followed by the associated value. Keys and values are converted to strings as by String.valueOf(Object). |
boolean |
unlock(Object oKey)
Unlock the specified item. |
Methods inherited from class com.tangosol.util.WrapperObservableMap |
---|
addMapListener, addMapListener, addMapListener, containsValue, dispatchEvent, dispatchPendingEvent, get, getCacheStatistics, getInternalKeySet, getMap, getMapListenerSupport, hasListeners, instantiateInternalListener, isCollectStats, isEventFabricator, isSynthetic, isTranslateEvents, removeMapListener, removeMapListener, removeMapListener, setCollectStats, setTranslateEvents |
Methods inherited from class com.tangosol.util.AbstractKeySetBasedMap |
---|
containsKey, instantiateEntrySet, instantiateKeyIterator, instantiateKeySet, instantiateValues, isEmpty, iterateKeys, size |
Methods inherited from class com.tangosol.util.AbstractKeyBasedMap |
---|
clone, entrySet, equals, getAll, hashCode, keySet, values |
Methods inherited from interface com.tangosol.util.ConcurrentMap |
---|
containsKey, containsValue, get, isEmpty, size |
Methods inherited from interface java.util.Map |
---|
entrySet, equals, hashCode, keySet, values |
Field Detail |
---|
protected boolean m_fEnforceLocking
protected long m_cWaitMillis
protected final SafeHashMap m_mapLock
protected final ThreadGate m_gateMap
Constructor Detail |
---|
public WrapperConcurrentMap(Map map)
Note: it is assumed that while the WrapperConcurrentMap exists, there is no direct manipulation with the content of the wrapped map.
map
- the Map that will be wrapped by this WrapperConcurrentMappublic WrapperConcurrentMap(Map map, boolean fEnforceLocking, long cWaitMillis)
Note: it is assumed that while the WrapperConcurrentMap exists, there is no direct manipulation with the content of the wrapped map.
map
- the Map that will be wrapped by this
WrapperConcurrentMapfEnforceLocking
- if true the locking is enforced for put, remove
and clear operations; otherwise a client is
responsible for calling lock and unlock explicitlycWaitMillis
- if locking enforcement is required then this
parameter speicifes the number of milliseconds to
continue trying to obtain a lock; pass -1 to block
the calling thread until the lock could be obtainedMethod Detail |
---|
public boolean lock(Object oKey, long cWait)
The item doesn't have to exist to be locked. While the item is locked there is known to be a lock holder which has an exclusive right to modify (calling put and remove methods) that item.
Lock holder is an abstract concept that depends on the ConcurrentMap implementation. For example, holder could be a cluster member or a thread (or both).
Locking strategy may vary for concrete implementations as well. Lock could have an expiration time (this lock is sometimes called a "lease") or be held indefinitely (until the lock holder terminates).
Some implementations may allow the entire map to be locked. If the map is
locked in such a way, then only a lock holder is allowed to perform
any of the "put" or "remove" operations.
Pass the special constant ConcurrentMap.LOCK_ALL
as the oKey parameter
to indicate the map lock.
lock
in interface ConcurrentMap
oKey
- key being lockedcWait
- the number of milliseconds to continue trying to obtain
a lock; pass zero to return immediately; pass -1 to block
the calling thread until the lock could be obtained
public boolean lock(Object oKey)
This method behaves exactly as if it simply performs the call lock(oKey, 0).
lock
in interface ConcurrentMap
oKey
- key being locked
public boolean unlock(Object oKey)
unlock
in interface ConcurrentMap
oKey
- key being unlocked
public void clear()
If lock enforcement is required an attempt will be made to lock the
entire map using the ConcurrentMap.LOCK_ALL
object.
Note: if this operation fails due to a ConcurrentModificationException, then any subset of the current mappings could still remain in the map.
clear
in interface ConcurrentMap
clear
in interface Map
clear
in class WrapperObservableMap
ConcurrentModificationException
- if any entry is locked
by another threadpublic Object put(Object oKey, Object oValue)
put
in interface ConcurrentMap
put
in interface Map
put
in class WrapperObservableMap
oKey
- key with which the specified value is to be associatedoValue
- value to be associated with the specified key
ConcurrentModificationException
- if the entry is locked
by another threadpublic void putAll(Map map)
AbstractKeyBasedMap.put(java.lang.Object, java.lang.Object)
on this map once for each mapping in the passed map. The behavior of
this operation is unspecified if the passed map is modified while the
operation is in progress.
putAll
in interface ConcurrentMap
putAll
in interface Map
putAll
in class WrapperObservableMap
map
- the Map containing the key/value pairings to put into this
Map
ConcurrentModificationException
- if the entry is locked
by another threadpublic Object remove(Object oKey)
remove
in interface ConcurrentMap
remove
in interface Map
remove
in class WrapperObservableMap
oKey
- key whose mapping is to be removed from the map
ConcurrentModificationException
- if the entry is locked
by another threadprotected boolean isInternalKeySetIteratorMutable()
isInternalKeySetIteratorMutable
in class WrapperObservableMap
AbstractKeyBasedMap.removeBlind(Object)
methodprotected boolean removeBlind(Object oKey)
removeBlind
in class WrapperObservableMap
oKey
- key whose mapping is to be removed from the map
ConcurrentModificationException
- if the entry is locked
by another threadpublic String toString()
toString
in class WrapperObservableMap
public boolean isLockingEnforced()
public void setLockingEnforced(boolean fEnforce)
fEnforce
- pass true to enforce locking; false otherwisepublic long getWaitMillis()
public void setWaitMillis(long cWaitMillis)
cWaitMillis
- the wait time in millisecondsprotected String getDescription()
getDescription
in class WrapperObservableMap
public String getLockDescription(Object oKey)
oKey
- the key
protected WrapperConcurrentMap.Lock instantiateLock(Object oKey)
|
CoherenceTM v3.3 Copyright© 2000-2007 by Oracle Corporation |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |