readerwriter
Class WritersPreferedGuardian

java.lang.Object
  |
  +--readerwriter.Guardian
        |
        +--readerwriter.WritersPreferedGuardian

public class WritersPreferedGuardian
extends Guardian

La classe definisce le priorita' di accesso alla risorsa condivisa, da parte di Lettori e Scrittori, preferendo gli scrittori : Se uno scrittore tenta di accedere alla risorsa, nuovi lettori non sono ammessi sulla risorsa, i lettori invece che stanno utilizzando la risorsa, vengono lasciati uscire. In piu' se un lettore scrittore, finito l'utilizzo della risorsa, dovra' decidere a chi, fra un lettore ed uno scrittore, assegnare la risorsa, preferira' quest'ultimo.


Constructor Summary
WritersPreferedGuardian()
          Inizializza allo stato di default le variabili private della classe
WritersPreferedGuardian(ThreadSelector readers, ThreadSelector writers)
          Inizializza gli attributi privati della classe con i parametri attuali
 
Method Summary
 void fineLettura()
          Determina la fine dell'operazione di lettura da parte di un thread ATTENZIONE : L'operazione e' thread safe La lettura della risorsa e' terminata, se esistono scrittori in attesa, si preferira' co nsentire loro l'uso della risorsa, prima che ad eventuali altri lettori
 void fineScrittura()
          Determina la fine dell'operazione di scrittura da parte di un thread ATTENZIONE : L'operazione e' thread safe La scrittura della risorsa e' terminata, si preferira' anche in questo caso consentire l'uso della risorsa agli scrittori, piuttosto che ad eventuali altri lettori
 void iniziaLettura(java.lang.Object priority)
          Determina l'inizio dell'operazione di lettura da parte di un thread ATTENZIONE : L'operazione e' thread safe Se esistono scrittori in attesa, il lettore si mette in pausa, in attesa che tutti gli scrittori abbiano finito il loro compito.
 void iniziaScrittura(java.lang.Object priority)
          Determina l'inizio dell'operazione di scrittura da parte di un thread ATTENZIONE : L'operazione e' thread safe Se esiste qualcuno che sta leggendo o scrivendo sulla risorsa, l'operazione si interrompe, in attesa di ricevere l'autorizzazione di procedere oltre
 
Methods inherited from class readerwriter.Guardian
decrNumReaders, decrNumWriters, getNumReaders, getNumWriters, incrNumReaders, incrNumWriters
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WritersPreferedGuardian

public WritersPreferedGuardian()
Inizializza allo stato di default le variabili private della classe

WritersPreferedGuardian

public WritersPreferedGuardian(ThreadSelector readers,
                               ThreadSelector writers)
Inizializza gli attributi privati della classe con i parametri attuali
Parameters:
readers - ThreadSelector che definira' la politica di risveglio dei thread in lettura
writers - ThreadSelector che definira' la politica di risveglio dei thread in scrittura
Method Detail

iniziaLettura

public void iniziaLettura(java.lang.Object priority)
                   throws SemaphoredThreadRequireException

Determina l'inizio dell'operazione di lettura da parte di un thread

ATTENZIONE : L'operazione e' thread safe

Se esistono scrittori in attesa, il lettore si mette in pausa, in attesa che tutti gli scrittori abbiano finito il loro compito. Se esistono altri lettori sulla risorsa, l'opearazione procede senza interruzioni

Overrides:
iniziaLettura in class Guardian
Parameters:
priority - L'ogetto che rappresenta la priorita' da attribuire all'operazione
Throws:
SemaphoredThreadRequireException - Eccezione lanciata se il thread che sta per eseguire il metodo non e' un Thread di tipo SemaphoredThread

fineLettura

public void fineLettura()
                 throws SemaphoredThreadRequireException

Determina la fine dell'operazione di lettura da parte di un thread

ATTENZIONE : L'operazione e' thread safe

La lettura della risorsa e' terminata, se esistono scrittori in attesa, si preferira' co nsentire loro l'uso della risorsa, prima che ad eventuali altri lettori

Overrides:
fineLettura in class Guardian
Throws:
SemaphoredThreadRequireException - Eccezione lanciata se il thread che sta per eseguire il metodo non e' un Thread di tipo SemaphoredThread

iniziaScrittura

public void iniziaScrittura(java.lang.Object priority)
                     throws SemaphoredThreadRequireException

Determina l'inizio dell'operazione di scrittura da parte di un thread

ATTENZIONE : L'operazione e' thread safe

Se esiste qualcuno che sta leggendo o scrivendo sulla risorsa, l'operazione si interrompe, in attesa di ricevere l'autorizzazione di procedere oltre

Overrides:
iniziaScrittura in class Guardian
Parameters:
priority - L'ogetto che rappresenta la priorita' da attribuire all'operazione
Throws:
SemaphoredThreadRequireException - Eccezione lanciata se il thread che sta per eseguire il metodo non e' un Thread di tipo SemaphoredThread

fineScrittura

public void fineScrittura()
                   throws SemaphoredThreadRequireException

Determina la fine dell'operazione di scrittura da parte di un thread

ATTENZIONE : L'operazione e' thread safe

La scrittura della risorsa e' terminata, si preferira' anche in questo caso consentire l'uso della risorsa agli scrittori, piuttosto che ad eventuali altri lettori

Overrides:
fineScrittura in class Guardian
Throws:
SemaphoredThreadRequireException - Eccezione lanciata se il thread che sta per eseguire il metodo non e' un Thread di tipo SemaphoredThread