protected class MultiBinaryLongMap.PrimaryBinaryLongMap.ValidatingLock extends Object implements Lock
Note: ValidatingLock is assumed to be used by the PrimaryBinaryLongMap to wrap lock implementations that are dependent (chained) to the "master" RW-lock. As the master RW-lock is used to protect any structural changes, it also implicitly serves as a JMM memory barrier that guarantees a "flush" of the map implementation reference.
Modifier and Type | Field and Description |
---|---|
protected Lock |
f_lock
The underlying lock.
|
protected BinaryLongMap |
m_blmImpl
The primary BinaryLongMap implementation to check for
|
Constructor and Description |
---|
ValidatingLock(BinaryLongMap blm, Lock lock)
Construct a ValidatingLock backed by the specified Lock.
|
ValidatingLock(Lock lock)
Construct a ValidatingLock backed by the specified Lock.
|
Modifier and Type | Method and Description |
---|---|
protected BinaryLongMap |
getImplMap()
Return the primary BinaryLongMap implementation validate by this ValidatingLock.
|
void |
lock() |
void |
lockInterruptibly() |
Condition |
newCondition() |
protected void |
setImplMap(BinaryLongMap blmImpl)
Set the primary BinaryLongMap implementation to be validated by this ValidatingLock.
|
boolean |
tryLock() |
boolean |
tryLock(long cTime, TimeUnit unit) |
void |
unlock() |
protected void |
validate()
Validate that the BinaryLongMap associated with this ValidatingLock is still the implementation map of the containing PrimaryBinaryLongMap.
|
protected final Lock f_lock
protected BinaryLongMap m_blmImpl
public ValidatingLock(Lock lock)
lock
- the underlying lockpublic ValidatingLock(BinaryLongMap blm, Lock lock)
blm
- the primary BinaryLongMap implementation to validatelock
- the underlying lockpublic void lockInterruptibly() throws InterruptedException
lockInterruptibly
in interface Lock
InterruptedException
public boolean tryLock(long cTime, TimeUnit unit) throws InterruptedException
tryLock
in interface Lock
InterruptedException
public Condition newCondition()
newCondition
in interface Lock
protected BinaryLongMap getImplMap()
protected void setImplMap(BinaryLongMap blmImpl)
blmImpl
- the primary BinaryLongMap implementationprotected void validate()
Callers are required to hold the lock. Note: the lock provides a memory barrier ensuring visibility of updates to the map implementation of the outer PrimaryBinaryLongMap.