org.metasyntactic.thread
Class ReadersPreferredMonitor

java.lang.Object
  |
  +--org.metasyntactic.thread.ReadersPreferredMonitor
All Implemented Interfaces:
ReaderWriterMonitor

public class ReadersPreferredMonitor
extends java.lang.Object
implements ReaderWriterMonitor

Implementation of MultipleReadersWritersMonitor that gives preference to readers. A reader may not begin reading if there is a writer writing; otherwise, it may begin immediately. A writer may not begin writing if there are any readers present or if another writer is writing.


Field Summary
protected  int readersReading
          number readers reading
protected  int readersTotal
          number of readers total (reading or waiting to read)
protected  int writersTotal
          number of writers total (writing or waiting to write)
protected  int writerWriting
          number writers writing, 0 or 1
 
Constructor Summary
ReadersPreferredMonitor()
           
 
Method Summary
 void startReading()
          Called to begin reading the shared data structure.
 void startWriting()
          Called to begin writing the shared data structure.
 void stopReading()
          Called when the thread is finished reading the shared data structure.
 void stopWriting()
          Called when the thread is finished writing the shared data structure.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

readersReading

protected int readersReading
number readers reading


readersTotal

protected int readersTotal
number of readers total (reading or waiting to read)


writerWriting

protected int writerWriting
number writers writing, 0 or 1


writersTotal

protected int writersTotal
number of writers total (writing or waiting to write)

Constructor Detail

ReadersPreferredMonitor

public ReadersPreferredMonitor()
Method Detail

startReading

public void startReading()
                  throws java.lang.InterruptedException
Description copied from interface: ReaderWriterMonitor
Called to begin reading the shared data structure. exception InterruptedException If interrupted while waiting for access.

Specified by:
startReading in interface ReaderWriterMonitor
Throws:
java.lang.InterruptedException - When the thread is interrupted before starting

stopReading

public void stopReading()
Description copied from interface: ReaderWriterMonitor
Called when the thread is finished reading the shared data structure.

Specified by:
stopReading in interface ReaderWriterMonitor

startWriting

public void startWriting()
                  throws java.lang.InterruptedException
Description copied from interface: ReaderWriterMonitor
Called to begin writing the shared data structure. exception InterruptedException If interrupted while waiting for access.

Specified by:
startWriting in interface ReaderWriterMonitor
Throws:
java.lang.InterruptedException - When the thread is interrupted before starting

stopWriting

public void stopWriting()
Description copied from interface: ReaderWriterMonitor
Called when the thread is finished writing the shared data structure.

Specified by:
stopWriting in interface ReaderWriterMonitor