Class SegmentedConcurrentMap
- All Implemented Interfaces:
ConcurrentMap
,ConcurrentMap
,Map
See ConcurrentMap
- Since:
- Coherence 3.5
- Author:
- rhl 2008.12.01
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
Action support for a conditional remove().static interface
ContentionObserver is used to observe the contention lock-related actions performed on the concurrent map.class
LockableEntry is an Entry that supports locking.protected class
Action support for lock().protected class
Action support for remove().protected static class
Action support for size().protected class
Action support for unlock().Nested classes/interfaces inherited from class com.tangosol.util.SegmentedHashMap
SegmentedHashMap.ContainsValueAction, SegmentedHashMap.Entry, SegmentedHashMap.EntryAction, SegmentedHashMap.EntryActionAdapter, SegmentedHashMap.EntrySet, SegmentedHashMap.GetEntryAction, SegmentedHashMap.InsertAction, SegmentedHashMap.IterableEntryAction, SegmentedHashMap.KeySet, SegmentedHashMap.Segment, SegmentedHashMap.ValuesCollection
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
Field Summary
Modifier and TypeFieldDescriptionThe singleton action for conditional remove.protected SegmentedConcurrentMap.LockAction
The action for lock() support.protected SegmentedConcurrentMap.SizeAction
The singleton action for size support.protected SegmentedConcurrentMap.UnlockAction
The action for unlock() support.protected static AtomicReferenceFieldUpdater
AtomicUpdater for the entry value.The ContentionObserver; may be null.protected Gate
The Gate controlling LOCK_ALL access for this map.Fields inherited from class com.tangosol.util.SegmentedHashMap
BIGGEST_MODULO, DEFAULT_GROWTHRATE, DEFAULT_INITIALSIZE, DEFAULT_LOADFACTOR, EMPTY, LOCK_ALL_PENDING, LOCK_ALL_PENDING_IDX, LOCK_COUNT, LOCKS_ALL, LOCKS_NONE, m_actionContainsValue, m_actionGetEntry, m_actionInsert, m_actionRemove, m_aeBucket, m_aSegment, m_atomicLocks, m_colValues, m_cSegmentCapacity, m_flGrowthRate, m_flLoadFactor, m_oIterActive, m_setEntries, m_setKeys, MIN_SEGMENT_CAPACITY, NO_VALUE, PRIME_MODULO, PUTALL_THRESHOLD, RESIZING, SEGMENT_COUNT, SEGMENT_LOCK_MAX_SPIN
Fields inherited from class com.tangosol.util.Base
LOG_ALWAYS, LOG_CONFIG, LOG_DEBUG, LOG_ERR, LOG_INFO, LOG_MAX, LOG_MIN, LOG_QUIET, LOG_WARN, POWER_0, POWER_G, POWER_K, POWER_M, POWER_T, UNIT_D, UNIT_H, UNIT_M, UNIT_MS, UNIT_NS, UNIT_S, UNIT_US
Fields inherited from interface com.tangosol.util.ConcurrentMap
LOCK_ALL
-
Constructor Summary
ConstructorDescriptionDefault constructor.SegmentedConcurrentMap
(int cInitialBuckets, float flLoadFactor, float flGrowthRate) Construct a SegmentedConcurrentMap using the specified settings.SegmentedConcurrentMap
(int cInitialBuckets, float flLoadFactor, float flGrowthRate, SegmentedConcurrentMap.ContentionObserver contentionObserver) Construct a thread-safe hash map using the specified settings.SegmentedConcurrentMap
(SegmentedConcurrentMap.ContentionObserver contentionObserver) Construct a SegmentedConcurrentMap with the default settings and the specified ContentionObserver -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Removes all mappings from this map.Return the registered action for conditional remove.Return the ContentionObserver for this SegmentedConcurrentMap.protected SegmentedConcurrentMap.LockAction
Return the registered action for lock().protected SegmentedConcurrentMap.SizeAction
Return the registered action for size().protected SegmentedConcurrentMap.UnlockAction
Return the registered action for unlock().protected void
Initialize the EntryAction's for this map.Factory for ConditionalRemoveActionprotected SegmentedHashMap.Entry
instantiateEntry
(Object oKey, Object oValue, int nHash) Factory for Entry.protected SegmentedConcurrentMap.LockAction
Factory for LockActionprotected SegmentedHashMap.RemoveAction
Factory for RemoveActionprotected SegmentedConcurrentMap.SizeAction
Factory for SizeActionprotected SegmentedConcurrentMap.UnlockAction
Factory for UnlockActionboolean
isEmpty()
Returns true if this map contains no key-value mappings.boolean
Attempt to lock the specified item and return immediately.boolean
Attempt to lock the specified item within the specified period of time.putIfAbsent
(Object oKey, Object oValue) boolean
boolean
protected void
Specify the action for conditional remove.protected void
setContentionObserver
(SegmentedConcurrentMap.ContentionObserver contentionObserver) Set the ContentionObserver for this SegmentedConcurrentMap.protected void
Specify the action for lock().protected void
Specify the action for size().protected void
Specify the action for unlock().int
size()
Returns the number of key-value mappings in this map.boolean
Unlock the specified item.Methods inherited from class com.tangosol.util.SegmentedHashMap
containsKey, containsValue, contendForSegment, ensureLoadFactor, entryFromBucket, entrySet, equals, get, getBucketIndex, getContainsValueAction, getEntry, getEntryInternal, getEntryInternal, getGetEntryAction, getInsertAction, getRemoveAction, getSegmentForKey, getSegmentIndex, getStableBucketArray, grow, grow, hashCode, instantiateContainsValueAction, instantiateEntrySet, instantiateGetEntryAction, instantiateInsertAction, instantiateKeySet, instantiateValuesCollection, invokeOnAllKeys, invokeOnKey, isActiveIterator, iteratorActivated, keySet, lockAllBuckets, lockAllBuckets, lockAllSegments, lockBucket, lockSegment, put, putAll, putInternal, putInternal, releaseIterator, remove, removeInternal, setContainsValueAction, setGetEntryAction, setInsertAction, setRemoveAction, toArrayInternal, toString, unlockAllBuckets, unlockAllBuckets, unlockAllSegments, unlockBucket, unlockSegment, values
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.tangosol.util.ConcurrentMap
containsKey, containsValue, get, put, putAll, remove
Methods inherited from interface java.util.concurrent.ConcurrentMap
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, replaceAll
-
Field Details
-
m_atomicUpdaterValue
AtomicUpdater for the entry value. -
m_gateLockAll
The Gate controlling LOCK_ALL access for this map. -
m_actionLock
The action for lock() support. -
m_actionUnlock
The action for unlock() support. -
m_actionSize
The singleton action for size support. -
m_actionConditionalRemove
The singleton action for conditional remove. -
m_contentionObserver
The ContentionObserver; may be null.
-
-
Constructor Details
-
SegmentedConcurrentMap
public SegmentedConcurrentMap()Default constructor. -
SegmentedConcurrentMap
Construct a SegmentedConcurrentMap with the default settings and the specified ContentionObserver- Parameters:
contentionObserver
- the ContentionObserver
-
SegmentedConcurrentMap
public SegmentedConcurrentMap(int cInitialBuckets, float flLoadFactor, float flGrowthRate) Construct a SegmentedConcurrentMap using the specified settings.- Parameters:
cInitialBuckets
- the initial number of hash buckets, 0 < nflLoadFactor
- the acceptable load factor before resizing occurs, 0 < n, such that a load factor of 1.0 causes resizing when the number of entries exceeds the number of bucketsflGrowthRate
- the rate of bucket growth when a resize occurs, 0 < n, such that a growth rate of 1.0 will double the number of buckets: bucketcount = bucketcount * (1 + growthrate)
-
SegmentedConcurrentMap
public SegmentedConcurrentMap(int cInitialBuckets, float flLoadFactor, float flGrowthRate, SegmentedConcurrentMap.ContentionObserver contentionObserver) Construct a thread-safe hash map using the specified settings.- Parameters:
cInitialBuckets
- the initial number of hash buckets, 0 < nflLoadFactor
- the acceptable load factor before resizing occurs, 0 < n, such that a load factor of 1.0 causes resizing when the number of entries exceeds the number of bucketsflGrowthRate
- the rate of bucket growth when a resize occurs, 0 < n, such that a growth rate of 1.0 will double the number of buckets: bucketcount = bucketcount * (1 + growthrate)contentionObserver
- the ContentionObserver
-
-
Method Details
-
getLockAction
Return the registered action for lock().- Returns:
- the registered action for lock()
-
setLockAction
Specify the action for lock().- Parameters:
action
- the action for lock()
-
getUnlockAction
Return the registered action for unlock().- Returns:
- the registered action for unlock()
-
setUnlockAction
Specify the action for unlock().- Parameters:
action
- the action for unlock()
-
getSizeAction
Return the registered action for size().- Returns:
- the registered action for size()
-
setSizeAction
Specify the action for size().- Parameters:
action
- the action for size()
-
getConditionalRemoveAction
Return the registered action for conditional remove.- Returns:
- the registered action for conditional remove
-
setConditionalRemoveAction
Specify the action for conditional remove.- Parameters:
action
- the action for conditional remove
-
getContentionObserver
Return the ContentionObserver for this SegmentedConcurrentMap.- Returns:
- the ContentionObserver
-
setContentionObserver
Set the ContentionObserver for this SegmentedConcurrentMap.- Parameters:
contentionObserver
- the contentionObserver
-
clear
public void clear()Removes all mappings from this map.- Specified by:
clear
in interfaceConcurrentMap
- Specified by:
clear
in interfaceMap
- Overrides:
clear
in classSegmentedHashMap
-
size
public int size()Returns the number of key-value mappings in this map.Note: Unlike some Map implementations, the size() operation on this map may be relatively expensive.
- Specified by:
size
in interfaceConcurrentMap
- Specified by:
size
in interfaceMap
- Overrides:
size
in classSegmentedHashMap
- Returns:
- the number of key-value mappings in this map
-
isEmpty
public boolean isEmpty()Returns true if this map contains no key-value mappings.- Specified by:
isEmpty
in interfaceConcurrentMap
- Specified by:
isEmpty
in interfaceMap
- Overrides:
isEmpty
in classSegmentedHashMap
- Returns:
- true if this map contains no key-value mappings
-
putIfAbsent
- Specified by:
putIfAbsent
in interfaceConcurrentMap
- Specified by:
putIfAbsent
in interfaceMap
-
replace
- Specified by:
replace
in interfaceConcurrentMap
- Specified by:
replace
in interfaceMap
-
replace
- Specified by:
replace
in interfaceConcurrentMap
- Specified by:
replace
in interfaceMap
-
remove
- Specified by:
remove
in interfaceConcurrentMap
- Specified by:
remove
in interfaceMap
-
lock
Attempt to lock the specified item and return immediately.This method behaves exactly as if it simply performs the call lock(oKey, 0).
- Specified by:
lock
in interfaceConcurrentMap
- Parameters:
oKey
- key being locked- Returns:
- true if the item was successfully locked; false otherwise
-
lock
Attempt to lock the specified item within the specified period of time.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.- Specified by:
lock
in interfaceConcurrentMap
- Parameters:
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- Returns:
- true if the item was successfully locked within the specified time; false otherwise
-
unlock
Unlock the specified item. The item doesn't have to exist to be unlocked. If the item is currently locked, only the holder of the lock could successfully unlock it.- Specified by:
unlock
in interfaceConcurrentMap
- Parameters:
oKey
- key being unlocked- Returns:
- true if the item was successfully unlocked; false otherwise
-
initializeActions
protected void initializeActions()Initialize the EntryAction's for this map.- Overrides:
initializeActions
in classSegmentedHashMap
-
instantiateRemoveAction
Factory for RemoveAction- Overrides:
instantiateRemoveAction
in classSegmentedHashMap
- Returns:
- a RemoveAction
-
instantiateConditionalRemoveAction
Factory for ConditionalRemoveAction- Returns:
- a ConditionalRemoveAction
-
instantiateLockAction
Factory for LockAction- Returns:
- a LockAction
-
instantiateUnlockAction
Factory for UnlockAction- Returns:
- an UnlockAction
-
instantiateSizeAction
Factory for SizeAction- Returns:
- a SizeAction
-
instantiateEntry
Factory for Entry.- Overrides:
instantiateEntry
in classSegmentedHashMap
- Parameters:
oKey
- the keyoValue
- the valuenHash
- the hashCode value of the key- Returns:
- a new instance of the Entry class (or a subclass thereof)
-