java.lang.Object
org.ematgine.utils.concurrent.WriterPreferenceReadWriteLock
- All Implemented Interfaces:
- ReadWriteLock
- Direct Known Subclasses:
- ReaderPreferenceReadWriteLock, ReentrantWriterPreferenceReadWriteLock
- public class WriterPreferenceReadWriteLock
- extends java.lang.Object
- implements ReadWriteLock
A ReadWriteLock that prefers waiting writers over
waiting readers when there is contention. This class
is adapted from the versions described in CPJ, improving
on the ones there a bit by segregating reader and writer
wait queues, which is typically more efficient.
The locks are NOT reentrant. In particular,
even though it may appear to usually work OK,
a thread holding a read lock should not attempt to
re-acquire it. Doing so risks lockouts when there are
also waiting writers.
[ Introduction to this package. ]
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
activeReaders_
protected long activeReaders_
activeWriter_
protected java.lang.Thread activeWriter_
waitingReaders_
protected long waitingReaders_
waitingWriters_
protected long waitingWriters_
readerLock_
protected final WriterPreferenceReadWriteLock.ReaderLock readerLock_
writerLock_
protected final WriterPreferenceReadWriteLock.WriterLock writerLock_
WriterPreferenceReadWriteLock
public WriterPreferenceReadWriteLock()
writeLock
public Sync writeLock()
- Description copied from interface:
ReadWriteLock
- get the writeLock
- Specified by:
writeLock in interface ReadWriteLock
readLock
public Sync readLock()
- Description copied from interface:
ReadWriteLock
- get the readLock
- Specified by:
readLock in interface ReadWriteLock
cancelledWaitingReader
protected void cancelledWaitingReader()
cancelledWaitingWriter
protected void cancelledWaitingWriter()
allowReader
protected boolean allowReader()
- Override this method to change to reader preference
startRead
protected boolean startRead()
startWrite
protected boolean startWrite()
startReadFromNewReader
protected boolean startReadFromNewReader()
startWriteFromNewWriter
protected boolean startWriteFromNewWriter()
startReadFromWaitingReader
protected boolean startReadFromWaitingReader()
startWriteFromWaitingWriter
protected boolean startWriteFromWaitingWriter()
endRead
protected WriterPreferenceReadWriteLock.Signaller endRead()
- Called upon termination of a read.
Returns the object to signal to wake up a waiter, or null if no such
endWrite
protected WriterPreferenceReadWriteLock.Signaller endWrite()
- Called upon termination of a write.
Returns the object to signal to wake up a waiter, or null if no such