Class SegmentedConcurrentMap
- All Implemented Interfaces:
ConcurrentMap,ConcurrentMap,Map
See ConcurrentMap
- Since:
- Coherence 3.5
- Author:
- rhl 2008.12.01
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classAction support for a conditional remove().static interfaceContentionObserver is used to observe the contention lock-related actions performed on the concurrent map.classLockableEntry is an Entry that supports locking.protected classAction support for lock().protected classAction support for remove().protected static classAction support for size().protected classAction 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.ValuesCollectionNested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter -
Field Summary
FieldsModifier and TypeFieldDescriptionThe singleton action for conditional remove.protected SegmentedConcurrentMap.LockActionThe action for lock() support.protected SegmentedConcurrentMap.SizeActionThe singleton action for size support.protected SegmentedConcurrentMap.UnlockActionThe action for unlock() support.protected static AtomicReferenceFieldUpdaterAtomicUpdater for the entry value.The ContentionObserver; may be null.protected GateThe 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_SPINFields 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_USFields inherited from interface com.tangosol.util.ConcurrentMap
LOCK_ALL -
Constructor Summary
ConstructorsConstructorDescriptionDefault 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 TypeMethodDescriptionvoidclear()Removes all mappings from this map.Return the registered action for conditional remove.Return the ContentionObserver for this SegmentedConcurrentMap.protected SegmentedConcurrentMap.LockActionReturn the registered action for lock().protected SegmentedConcurrentMap.SizeActionReturn the registered action for size().protected SegmentedConcurrentMap.UnlockActionReturn the registered action for unlock().protected voidInitialize the EntryAction's for this map.Factory for ConditionalRemoveActionprotected SegmentedHashMap.EntryinstantiateEntry(Object oKey, Object oValue, int nHash) Factory for Entry.protected SegmentedConcurrentMap.LockActionFactory for LockActionprotected SegmentedHashMap.RemoveActionFactory for RemoveActionprotected SegmentedConcurrentMap.SizeActionFactory for SizeActionprotected SegmentedConcurrentMap.UnlockActionFactory for UnlockActionbooleanisEmpty()Returns true if this map contains no key-value mappings.booleanAttempt to lock the specified item and return immediately.booleanAttempt to lock the specified item within the specified period of time.putIfAbsent(Object oKey, Object oValue) booleanbooleanprotected voidSpecify the action for conditional remove.protected voidsetContentionObserver(SegmentedConcurrentMap.ContentionObserver contentionObserver) Set the ContentionObserver for this SegmentedConcurrentMap.protected voidSpecify the action for lock().protected voidSpecify the action for size().protected voidSpecify the action for unlock().intsize()Returns the number of key-value mappings in this map.booleanUnlock 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, valuesMethods 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, waitMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface com.tangosol.util.ConcurrentMap
containsKey, containsValue, get, put, putAll, removeMethods 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:
clearin interfaceConcurrentMap- Specified by:
clearin interfaceMap- Overrides:
clearin 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:
sizein interfaceConcurrentMap- Specified by:
sizein interfaceMap- Overrides:
sizein 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:
isEmptyin interfaceConcurrentMap- Specified by:
isEmptyin interfaceMap- Overrides:
isEmptyin classSegmentedHashMap- Returns:
- true if this map contains no key-value mappings
-
putIfAbsent
- Specified by:
putIfAbsentin interfaceConcurrentMap- Specified by:
putIfAbsentin interfaceMap
-
replace
- Specified by:
replacein interfaceConcurrentMap- Specified by:
replacein interfaceMap
-
replace
- Specified by:
replacein interfaceConcurrentMap- Specified by:
replacein interfaceMap
-
remove
- Specified by:
removein interfaceConcurrentMap- Specified by:
removein 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:
lockin 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_ALLas the oKey parameter to indicate the map lock.- Specified by:
lockin 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:
unlockin 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:
initializeActionsin classSegmentedHashMap
-
instantiateRemoveAction
Factory for RemoveAction- Overrides:
instantiateRemoveActionin 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:
instantiateEntryin 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)
-