org.metasyntactic.thread
Class AlternatingReadersWritersMonitor

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

public class AlternatingReadersWritersMonitor
extends java.lang.Object
implements ReaderWriterMonitor

The Alternating-Readers/Writers Monitor will give the shared structure to a waiting writer when readers have finished with it and to readers when a writer has finished with it.


Field Summary
protected  int nextBatch
          Index in readersReadingAndWaiting of batch of number of readers waiting to read.
protected  int[] readersReadingAndWaiting
          Number readers reading and waiting to read in this batch or the next batch.
protected  int thisBatch
          Index in nr of batch of number of readers currently reading.
protected  int writersTotal
          Number of writers total.
protected  int writerWriting
          Number writers writing, 0 or 1
 
Constructor Summary
AlternatingReadersWritersMonitor()
           
 
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

thisBatch

protected int thisBatch
Index in nr of batch of number of readers currently reading.


nextBatch

protected int nextBatch
Index in readersReadingAndWaiting of batch of number of readers waiting to read. Always equal to 1-thisBatch.


readersReadingAndWaiting

protected int[] readersReadingAndWaiting
Number readers reading and waiting to read in this batch or the next batch.


writerWriting

protected int writerWriting
Number writers writing, 0 or 1


writersTotal

protected int writersTotal
Number of writers total.

Constructor Detail

AlternatingReadersWritersMonitor

public AlternatingReadersWritersMonitor()
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