public class ReaderPreferenceReadWriteLock
extends java.lang.Object
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.
| Modifier and Type | Class and Description |
|---|---|
protected class |
ReaderPreferenceReadWriteLock.ReaderLock |
protected class |
ReaderPreferenceReadWriteLock.Signaller
Reader and Writer requests are maintained in two different wait sets, by
two different objects.
|
static interface |
ReaderPreferenceReadWriteLock.Sync
Main interface for locks, gates, and conditions.
|
protected class |
ReaderPreferenceReadWriteLock.WriterLock |
| Modifier and Type | Field and Description |
|---|---|
protected long |
activeReaders_ |
protected java.lang.Thread |
activeWriter_ |
protected ReaderPreferenceReadWriteLock.ReaderLock |
readerLock_ |
protected long |
waitingReaders_ |
protected long |
waitingWriters_ |
protected ReaderPreferenceReadWriteLock.WriterLock |
writerLock_ |
| Constructor and Description |
|---|
ReaderPreferenceReadWriteLock() |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
allowReader() |
protected void |
cancelledWaitingReader() |
protected void |
cancelledWaitingWriter() |
protected ReaderPreferenceReadWriteLock.Signaller |
endRead()
Called upon termination of a read.
|
protected ReaderPreferenceReadWriteLock.Signaller |
endWrite()
Called upon termination of a write.
|
ReaderPreferenceReadWriteLock.Sync |
readLock() |
protected boolean |
startRead() |
protected boolean |
startReadFromNewReader() |
protected boolean |
startReadFromWaitingReader() |
protected boolean |
startWrite() |
protected boolean |
startWriteFromNewWriter() |
protected boolean |
startWriteFromWaitingWriter() |
ReaderPreferenceReadWriteLock.Sync |
writeLock() |
protected long activeReaders_
protected java.lang.Thread activeWriter_
protected long waitingReaders_
protected long waitingWriters_
protected final ReaderPreferenceReadWriteLock.ReaderLock readerLock_
protected final ReaderPreferenceReadWriteLock.WriterLock writerLock_
public ReaderPreferenceReadWriteLock.Sync writeLock()
public ReaderPreferenceReadWriteLock.Sync readLock()
protected void cancelledWaitingReader()
protected void cancelledWaitingWriter()
protected boolean allowReader()
protected boolean startRead()
protected boolean startWrite()
protected boolean startReadFromNewReader()
protected boolean startWriteFromNewWriter()
protected boolean startReadFromWaitingReader()
protected boolean startWriteFromWaitingWriter()
protected ReaderPreferenceReadWriteLock.Signaller endRead()
protected ReaderPreferenceReadWriteLock.Signaller endWrite()