Skip navigation links

Oracle® Coherence Java API Reference
Release 12.1.2.0.3

E26043-02


com.tangosol.util
Class SegmentedConcurrentMap.LockableEntry

java.lang.Object
  extended by com.tangosol.util.Base
      extended by com.tangosol.util.SegmentedHashMap.Entry
          extended by com.tangosol.util.SegmentedConcurrentMap.LockableEntry

All Implemented Interfaces:
java.util.Map.Entry
Enclosing class:
SegmentedConcurrentMap

public class SegmentedConcurrentMap.LockableEntry
extends SegmentedHashMap.Entry

LockableEntry is an Entry that supports locking. See ConcurrentMap


Field Summary
protected  short m_cContend
          The number of threads that are waiting to lock this Entry.
protected  short m_cLock
          The lock count (number of times the "lock()" was called by the locking thread).
protected  java.lang.Object m_oLockHolder
          The lock holder object.

 

Fields inherited from class com.tangosol.util.SegmentedHashMap.Entry
m_eNext, m_nHash, m_oKey, m_oValue

 

Constructor Summary
protected SegmentedConcurrentMap.LockableEntry(java.lang.Object oKey, java.lang.Object oValue, int nHash)
          Construct a LockableEntry for the given entry.

 

Method Summary
protected  boolean casValueInternal(java.lang.Object oValueAssume, java.lang.Object oValue)
          Set the value of this entry to the specified value iff the current value matches the assumed value.
 java.lang.Object getLockHolder()
          Return the holder of this lockable entry, or null if this entry is not locked.
protected  boolean isContended()
          Is there contention (a thread waiting) to lock this Entry?
protected  boolean isLocked()
          Is this entry Locked?
protected  boolean isSynthetic()
          Is this Entry synthetic?
protected  void lock(java.lang.Object oHolder)
          Lock this entry for the specified lock holder.
protected  java.lang.Object setValueInternal(java.lang.Object oValue)
          Replaces the value corresponding to this entry with the specified value (writes through to the map).
 java.lang.String toString()
          Render the map entry as a String.
protected  boolean unlock()
          Unlock this entry.
protected  long waitForNotify(long cWait)
          Wait for this LockableEntry to be notified that it has been freed by the previous lock-holder.

 

Methods inherited from class com.tangosol.util.SegmentedHashMap.Entry
equals, getKey, getValue, getValueInternal, hashCode, nextEntry, nextEntry, setNext, setValue

 

Field Detail

m_oLockHolder

protected volatile java.lang.Object m_oLockHolder
The lock holder object.

m_cLock

protected volatile short m_cLock
The lock count (number of times the "lock()" was called by the locking thread).

m_cContend

protected volatile short m_cContend
The number of threads that are waiting to lock this Entry.

Constructor Detail

SegmentedConcurrentMap.LockableEntry

protected SegmentedConcurrentMap.LockableEntry(java.lang.Object oKey,
                                               java.lang.Object oValue,
                                               int nHash)
Construct a LockableEntry for the given entry.
Parameters:
oKey - key with which the specified value is to be associated
oValue - value to be associated with the specified key
nHash - the hashCode for the specified key

Method Detail

getLockHolder

public java.lang.Object getLockHolder()
Return the holder of this lockable entry, or null if this entry is not locked.
Returns:
the lock holder, or null

setValueInternal

protected java.lang.Object setValueInternal(java.lang.Object oValue)
Replaces the value corresponding to this entry with the specified value (writes through to the map). The behavior of this call is undefined if the mapping has already been removed from the map.
Overrides:
setValueInternal in class SegmentedHashMap.Entry
Parameters:
oValue - new value to be stored in this entry
Returns:
old value corresponding to the entry, or NO_VALUE if the Entry was synthetic

isSynthetic

protected boolean isSynthetic()
Is this Entry synthetic?
Overrides:
isSynthetic in class SegmentedHashMap.Entry
Returns:
true iff this Entry is synthetic

waitForNotify

protected long waitForNotify(long cWait)
Wait for this LockableEntry to be notified that it has been freed by the previous lock-holder. If the lock is being held by a thread and that thread has died, release the lock.

Note: caller of this method is expected to hold a synchronization monitor for this LockableEntry object while making this call.

Parameters:
cWait - the number of milliseconds to wait for notification to obtain a lock; pass zero to return immediately; pass -1 to block the calling thread until the lock could be obtained
Returns:
updated wait time

lock

protected void lock(java.lang.Object oHolder)
Lock this entry for the specified lock holder.

Note: caller of this method is expected to have locked the segment for this Entry object

Parameters:
oHolder - the holder of this lock

unlock

protected boolean unlock()
Unlock this entry.

Note: caller of this method is expected to have locked the segment for this Entry object

Returns:
true iff the Entry is completely unlocked

casValueInternal

protected boolean casValueInternal(java.lang.Object oValueAssume,
                                   java.lang.Object oValue)
Set the value of this entry to the specified value iff the current value matches the assumed value.
Parameters:
oValueAssume - the assumed value
oValue - the new value
Returns:
true iff the value changed

toString

public java.lang.String toString()
Render the map entry as a String.
Overrides:
toString in class SegmentedHashMap.Entry
Returns:
the details about this entry

isLocked

protected boolean isLocked()
Is this entry Locked?
Returns:
true iff this entry is locked

isContended

protected boolean isContended()
Is there contention (a thread waiting) to lock this Entry?
Returns:
true iff another thread is contending for this Entry

Skip navigation links

Oracle® Coherence Java API Reference
Release 12.1.2.0.3

E26043-02


Copyright © 2000, 2014, Oracle and/or its affiliates. All rights reserved.