Class ReadPrefReadWriteLockManager
- java.lang.Object
-
- org.eclipse.rdf4j.common.concurrent.locks.AbstractReadWriteLockManager
-
- org.eclipse.rdf4j.common.concurrent.locks.ReadPrefReadWriteLockManager
-
- All Implemented Interfaces:
ReadWriteLockManager
public class ReadPrefReadWriteLockManager extends AbstractReadWriteLockManager
A read/write lock manager with reader preference. This lock manager block any requests for write locks until all read locks have been released.- Author:
- Arjohn Kampman, James Leigh
-
-
Constructor Summary
Constructors Constructor Description ReadPrefReadWriteLockManager()
Creates a MultiReadSingleWriteLockManager.ReadPrefReadWriteLockManager(boolean trackLocks)
Creates a new MultiReadSingleWriteLockManager, optionally with lock tracking enabled.
-
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.Lock
tryReadLock()
Gets a read lock, if available.Lock
tryWriteLock()
Gets an exclusive write lock, if available.-
Methods inherited from class org.eclipse.rdf4j.common.concurrent.locks.AbstractReadWriteLockManager
createReadLock, createWriteLock, isReaderActive, isWriterActive, waitForActiveReaders, waitForActiveWriter
-
-
-
-
Constructor Detail
-
ReadPrefReadWriteLockManager
public ReadPrefReadWriteLockManager()
Creates a MultiReadSingleWriteLockManager.
-
ReadPrefReadWriteLockManager
public ReadPrefReadWriteLockManager(boolean trackLocks)
Creates a new MultiReadSingleWriteLockManager, optionally with lock tracking enabled.- Parameters:
trackLocks
- Controls whether the lock manager will keep track of active locks. Enabling lock tracking will add some overhead, but can be very useful for debugging.
-
-
Method Detail
-
tryReadLock
public Lock tryReadLock()
Gets a read lock, if available. This method will return null if the read lock is not immediately available.
-
getReadLock
public Lock getReadLock() throws InterruptedException
Gets a read lock. This method blocks when a write lock is in use or has been requested until the write lock is released.- Throws:
InterruptedException
- In case the thread requesting the lock wasinterrupted
.
-
tryWriteLock
public Lock tryWriteLock()
Gets an exclusive write lock, if available. This method will return null if the write lock is not immediately available.
-
getWriteLock
public Lock getWriteLock() throws InterruptedException
Gets an exclusive write lock. This method blocks when the write lock is in use or has already been requested until the write lock is released. This method also block when read locks are active until all of them are released.- Throws:
InterruptedException
- In case the thread requesting the lock wasinterrupted
.
-
-