public class ReadWriteLockNamedLock extends NamedLockSupport
ReadWriteLock
instances. The adapted lock MUST SUPPORT
reentrancy, non re-entrant locks will NOT work. It is the responsibility of an adapting lock, to ensure that
above lock requirement stands.Modifier and Type | Class and Description |
---|---|
private static class |
ReadWriteLockNamedLock.Step |
Modifier and Type | Field and Description |
---|---|
private java.util.concurrent.locks.ReadWriteLock |
readWriteLock |
private java.lang.ThreadLocal<java.util.Deque<ReadWriteLockNamedLock.Step>> |
threadSteps |
logger
Constructor and Description |
---|
ReadWriteLockNamedLock(java.lang.String name,
NamedLockFactorySupport factory,
java.util.concurrent.locks.ReadWriteLock readWriteLock) |
Modifier and Type | Method and Description |
---|---|
boolean |
lockExclusively(long time,
java.util.concurrent.TimeUnit unit)
Tries to lock exclusively, may block for given time.
|
boolean |
lockShared(long time,
java.util.concurrent.TimeUnit unit)
Tries to lock shared, may block for given time.
|
void |
unlock()
Unlocks the lock, must be invoked by caller after one of the
NamedLock.lockShared(long, TimeUnit) or NamedLock.lockExclusively(long, TimeUnit) . |
close, name
private final java.lang.ThreadLocal<java.util.Deque<ReadWriteLockNamedLock.Step>> threadSteps
private final java.util.concurrent.locks.ReadWriteLock readWriteLock
public ReadWriteLockNamedLock(java.lang.String name, NamedLockFactorySupport factory, java.util.concurrent.locks.ReadWriteLock readWriteLock)
public boolean lockShared(long time, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
NamedLock
true
.java.lang.InterruptedException
public boolean lockExclusively(long time, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
NamedLock
true
.java.lang.InterruptedException
public void unlock()
NamedLock
NamedLock.lockShared(long, TimeUnit)
or NamedLock.lockExclusively(long, TimeUnit)
.