readerwriter
Class ReadersPreferedGuardian

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

public class ReadersPreferedGuardian
extends Guardian

La classe definisce le priorita' di accesso alla risorsa condivisa, da parte di Lettori e Scrittori, preferendo i lettori : Ovviamente i lettori possono accedere tutti allo stesso momento alla risorsa, ma se ci sono lettori sulla risorsa, l'accesso agli scrittori e' vietato, solo quando non esistono piu' lettori, l'ultimo lettore, assegnera' la risorsa ad uno scrittore


Constructor Summary
ReadersPreferedGuardian()
          Inizializza allo stato di default le variabili private della classe
ReadersPreferedGuardian(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 il lettore attuale e' l'ultimo lettore della risorsa, non ci sono altri lettori che stanno utilizzando la risorsa, e c'e' almeno uno scrittore che e' in coda per accedere alla risorsa, questo viene selezionato
 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, l'uso della risorsa ad uno scrittore, potra' essere autorizzata, solo es esclusivamente se non esistono lettori che stanno attualmente utilizzando la risorsa
 void iniziaLettura(java.lang.Object priority)
          Determina l'inizio dell'operazione di lettura da parte di un thread ATTENZIONE : L'operazione e' thread safe I lettori hanno la priorita', quindi anche se ci sono lettori in attesa, i lettori possono accedere, contemporaneamente vista la loro natura di lettori, alla risorsa.
 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

ReadersPreferedGuardian

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

ReadersPreferedGuardian

public ReadersPreferedGuardian(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

I lettori hanno la priorita', quindi anche se ci sono lettori in attesa, i lettori possono accedere, contemporaneamente vista la loro natura di lettori, alla risorsa. Ovviamente se c'e' gia' uno scrittore che sta utilizzando la risorsa, allora il/i lettori dovranno attendere

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 il lettore attuale e' l'ultimo lettore della risorsa, non ci sono altri lettori che stanno utilizzando la risorsa, e c'e' almeno uno scrittore che e' in coda per accedere alla risorsa, questo viene selezionato

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, l'uso della risorsa ad uno scrittore, potra' essere autorizzata, solo es esclusivamente se non esistono lettori che stanno attualmente utilizzando la risorsa

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