Class AbstractReadWriteLockManager
- java.lang.Object
-
- org.eclipse.rdf4j.common.concurrent.locks.AbstractReadWriteLockManager
-
- All Implemented Interfaces:
ReadWriteLockManager
- Direct Known Subclasses:
ReadPrefReadWriteLockManager
,WritePrefReadWriteLockManager
public abstract class AbstractReadWriteLockManager extends Object implements ReadWriteLockManager
An abstract base implementation of a read/write-lock manager.- Author:
- Håvard M. Ottestad
-
-
Constructor Summary
Constructors Constructor Description AbstractReadWriteLockManager()
AbstractReadWriteLockManager(boolean trackLocks)
AbstractReadWriteLockManager(boolean trackLocks, int waitToCollect)
AbstractReadWriteLockManager(String alias, int waitToCollect, LockDiagnostics... lockDiagnostics)
AbstractReadWriteLockManager(String alias, LockDiagnostics... lockDiagnostics)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Lock
getReadLock()
Gets a read lock.Lock
getWriteLock()
Gets an exclusive write lock.boolean
isReaderActive()
Returnsfalse
if there are no active read locks, otherwise returnstrue
.boolean
isWriterActive()
Returnsfalse
if there are no active write locks, otherwise returnstrue
.Lock
tryReadLock()
Gets a read lock, if available.Lock
tryWriteLock()
Gets an exclusive write lock, if available.void
waitForActiveReaders()
Blocks until all read locks have been released.void
waitForActiveWriter()
Blocks until all write locks have been released.
-
-
-
Constructor Detail
-
AbstractReadWriteLockManager
public AbstractReadWriteLockManager()
-
AbstractReadWriteLockManager
public AbstractReadWriteLockManager(boolean trackLocks)
-
AbstractReadWriteLockManager
public AbstractReadWriteLockManager(boolean trackLocks, int waitToCollect)
-
AbstractReadWriteLockManager
public AbstractReadWriteLockManager(String alias, LockDiagnostics... lockDiagnostics)
-
AbstractReadWriteLockManager
public AbstractReadWriteLockManager(String alias, int waitToCollect, LockDiagnostics... lockDiagnostics)
-
-
Method Detail
-
isWriterActive
public boolean isWriterActive()
Returnsfalse
if there are no active write locks, otherwise returnstrue
.- Specified by:
isWriterActive
in interfaceReadWriteLockManager
-
isReaderActive
public boolean isReaderActive()
Returnsfalse
if there are no active read locks, otherwise returnstrue
.- Specified by:
isReaderActive
in interfaceReadWriteLockManager
-
waitForActiveWriter
public void waitForActiveWriter() throws InterruptedException
Blocks until all write locks have been released.- Specified by:
waitForActiveWriter
in interfaceReadWriteLockManager
- Throws:
InterruptedException
- In case the thread requesting the lock wasinterrupted
.
-
waitForActiveReaders
public void waitForActiveReaders() throws InterruptedException
Blocks until all read locks have been released.- Specified by:
waitForActiveReaders
in interfaceReadWriteLockManager
- Throws:
InterruptedException
- In case the thread requesting the lock wasinterrupted
.
-
getReadLock
public Lock getReadLock() throws InterruptedException
Gets a read lock. This method blocks until the read lock is available.- Specified by:
getReadLock
in interfaceReadWriteLockManager
- Throws:
InterruptedException
- In case the thread requesting the lock wasinterrupted
.
-
getWriteLock
public Lock getWriteLock() throws InterruptedException
Gets an exclusive write lock. This method blocks until the write lock is available.- Specified by:
getWriteLock
in interfaceReadWriteLockManager
- Throws:
InterruptedException
- In case the thread requesting the lock wasinterrupted
.
-
tryReadLock
public Lock tryReadLock()
Gets a read lock, if available. This method will return null if the read lock is not immediately available.- Specified by:
tryReadLock
in interfaceReadWriteLockManager
-
tryWriteLock
public Lock tryWriteLock()
Gets an exclusive write lock, if available. This method will return null if the write lock is not immediately available.- Specified by:
tryWriteLock
in interfaceReadWriteLockManager
-
-