Package host.anzo.commons.concurrent
Class CloseableReentrantReadWriteLock
java.lang.Object
java.util.concurrent.locks.ReentrantReadWriteLock
host.anzo.commons.concurrent.CloseableReentrantReadWriteLock
- All Implemented Interfaces:
Serializable,ReadWriteLock
Extension of
ReentrantReadWriteLock providing convenience methods for try-with-resources lock management.
Wraps readLock and writeLock with AutoCloseable implementations, enabling automatic lock release
when exiting try-with-resources blocks.
Usage examples with var and unnamed variables in try-with-resources:
// Create lock instance
var lock = new CloseableReentrantReadWriteLock(false);
// Read lock with unnamed variable
try (var _ = lock.readOpen()) {
// Read protected data
System.out.println("Reading data...");
} // Read lock auto-released here
// Write lock with named variable
try (var writeLock = lock.writeOpen()) {
// Modify protected data
System.out.println("Writing data...");
} // Write lock auto-released here
// Multiple locks with unnamed variables
try (var _ = lock.readLock();
var __ = lock.writeLock()) {
// Combined read/write operations
System.out.println("Reading and writing data...");
}
- Since:
- 20.12.2023
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classAutoCloseable wrapper forReentrantReadWriteLock.ReadLockimplementing try-with-resources pattern.static final classAutoCloseable wrapper forReentrantReadWriteLock.WriteLockimplementing try-with-resources pattern.Nested classes/interfaces inherited from class java.util.concurrent.locks.ReentrantReadWriteLock
ReentrantReadWriteLock.ReadLock, ReentrantReadWriteLock.WriteLock -
Constructor Summary
ConstructorsConstructorDescriptionCloseableReentrantReadWriteLock(boolean fair) Creates a newCloseableReentrantReadWriteLockwith specified fairness policy. -
Method Summary
Methods inherited from class java.util.concurrent.locks.ReentrantReadWriteLock
getOwner, getQueuedReaderThreads, getQueuedThreads, getQueuedWriterThreads, getQueueLength, getReadHoldCount, getReadLockCount, getWaitingThreads, getWaitQueueLength, getWriteHoldCount, hasQueuedThread, hasQueuedThreads, hasWaiters, isFair, isWriteLocked, isWriteLockedByCurrentThread, toString
-
Constructor Details
-
CloseableReentrantReadWriteLock
public CloseableReentrantReadWriteLock(boolean fair) Creates a newCloseableReentrantReadWriteLockwith specified fairness policy.- Parameters:
fair-truefor fair ordering policy,falsefor non-fair
-
-
Method Details
-
readOpen
Acquires read lock and returns AutoCloseable wrapper.- Returns:
CloseableReentrantReadWriteLock.CloseableReentrantReadLockthat auto-releases when closed
-
writeOpen
Acquires write lock and returns AutoCloseable wrapper.- Returns:
CloseableReentrantReadWriteLock.CloseableReentrantWriteLockthat auto-releases when closed
-
readLock
Returns the closeable read lock wrapper.- Specified by:
readLockin interfaceReadWriteLock- Overrides:
readLockin classReentrantReadWriteLock- Returns:
CloseableReentrantReadWriteLock.CloseableReentrantReadLockinstance
-
writeLock
Returns the closeable write lock wrapper.- Specified by:
writeLockin interfaceReadWriteLock- Overrides:
writeLockin classReentrantReadWriteLock- Returns:
CloseableReentrantReadWriteLock.CloseableReentrantWriteLockinstance
-