protected static class MultiBinaryLongMap.ChainedLock extends Object implements Lock
Lock
implementation that represents a composition of two component locks, parent and child. All operations on this lock will first be performed on the parent lock, and only upon successful completion be performed on the child lock.
A ChainedLock could be used to manage multiple logical levels of concurrency control across multiple components without exposing multiple resource locks and thus imposing a locking order that reduces the possibility of introducing deadlocks.
Note: a ChainedLock could be used to represent a chain of more than two Locks by constructing a "chain of chains".
Modifier and Type | Field and Description |
---|---|
protected Lock |
f_lockChild
The "child" constituent lock.
|
protected Lock |
f_lockParent
The "parent" constituent lock.
|
Constructor and Description |
---|
ChainedLock(Lock lockParent, Lock lockChild)
Construct a new ChainedLock composed of the specified parent and child locks.
|
Modifier and Type | Method and Description |
---|---|
void |
lock() |
void |
lockInterruptibly() |
Condition |
newCondition() |
boolean |
tryLock() |
boolean |
tryLock(long cTime, TimeUnit unit) |
void |
unlock() |
protected final Lock f_lockParent
protected final Lock f_lockChild
public 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