Package org.eclipse.aether.named.support
Class ReadWriteLockNamedLock
- java.lang.Object
-
- org.eclipse.aether.named.support.NamedLockSupport
-
- org.eclipse.aether.named.support.ReadWriteLockNamedLock
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,NamedLock
public class ReadWriteLockNamedLock extends NamedLockSupport
Named lock support implementation that is usingReadWriteLock
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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
ReadWriteLockNamedLock.Step
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.locks.ReadWriteLock
readWriteLock
private java.lang.ThreadLocal<java.util.Deque<ReadWriteLockNamedLock.Step>>
threadSteps
-
Fields inherited from class org.eclipse.aether.named.support.NamedLockSupport
logger
-
-
Constructor Summary
Constructors Constructor Description ReadWriteLockNamedLock(java.lang.String name, NamedLockFactorySupport factory, java.util.concurrent.locks.ReadWriteLock readWriteLock)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
doLockExclusively(long time, java.util.concurrent.TimeUnit unit)
protected boolean
doLockShared(long time, java.util.concurrent.TimeUnit unit)
protected void
doUnlock()
-
Methods inherited from class org.eclipse.aether.named.support.NamedLockSupport
close, diagnosticState, doClose, lockExclusively, lockShared, name, toString, unlock
-
-
-
-
Field Detail
-
threadSteps
private final java.lang.ThreadLocal<java.util.Deque<ReadWriteLockNamedLock.Step>> threadSteps
-
readWriteLock
private final java.util.concurrent.locks.ReadWriteLock readWriteLock
-
-
Constructor Detail
-
ReadWriteLockNamedLock
public ReadWriteLockNamedLock(java.lang.String name, NamedLockFactorySupport factory, java.util.concurrent.locks.ReadWriteLock readWriteLock)
-
-
Method Detail
-
doLockShared
protected boolean doLockShared(long time, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
- Specified by:
doLockShared
in classNamedLockSupport
- Throws:
java.lang.InterruptedException
-
doLockExclusively
protected boolean doLockExclusively(long time, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
- Specified by:
doLockExclusively
in classNamedLockSupport
- Throws:
java.lang.InterruptedException
-
doUnlock
protected void doUnlock()
- Specified by:
doUnlock
in classNamedLockSupport
-
-