EDU.oswego.cs.dl.util.concurrent
public class WriterPreferenceReadWriteLock extends Object implements ReadWriteLock
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.
Nested Class Summary | |
---|---|
protected class | WriterPreferenceReadWriteLock.ReaderLock |
protected abstract class | WriterPreferenceReadWriteLock.Signaller
Reader and Writer requests are maintained in two different
wait sets, by two different objects. |
protected class | WriterPreferenceReadWriteLock.WriterLock |
Field Summary | |
---|---|
protected long | activeReaders_ |
protected Thread | activeWriter_ |
protected WriterPreferenceReadWriteLock.ReaderLock | readerLock_ |
protected long | waitingReaders_ |
protected long | waitingWriters_ |
protected WriterPreferenceReadWriteLock.WriterLock | writerLock_ |
Method Summary | |
---|---|
protected boolean | allowReader() Override this method to change to reader preference * |
protected void | cancelledWaitingReader() |
protected void | cancelledWaitingWriter() |
protected WriterPreferenceReadWriteLock.Signaller | endRead()
Called upon termination of a read.
|
protected WriterPreferenceReadWriteLock.Signaller | endWrite()
Called upon termination of a write.
|
Sync | readLock() |
protected boolean | startRead() |
protected boolean | startReadFromNewReader() |
protected boolean | startReadFromWaitingReader() |
protected boolean | startWrite() |
protected boolean | startWriteFromNewWriter() |
protected boolean | startWriteFromWaitingWriter() |
Sync | writeLock() |