Package readerwriter

Interface Summary
ThreadSelector L'interfaccia ThreadSelector, dichiara i metodi di base di quelle che saranno le classi concrete che definiranno le politiche di risveglio dei thread
 

Class Summary
FifoThreadSelector La classe FifoThreadSelector implementa un semplicissimo selezionatore di Thread (interfaccia ThreadSelector) : un thread che viene messo in coda, viene risvegliato quando tutti quelli che erano arrivati prima di lui a mettersi in coda sono stati risvegliati.
Guardian La classe concrete definiranno le priorita' di accesso alla risorsa condivisa, da parte di Lettori e Scrittori, in base alla situazione esistente : Lettori/Scrittori che gia' occupano la risorsa, Lettori/Scrittori che sono in attesa dell'utilizzo della risorsa.
PriorityThreadSelector La classe PriorityThreadSelector implementa un selezionatore di Thread (interfaccia ThreadSelector), a priorita', costruendo per ognuna delle 10 priorita' possibili una selezionatore di Thread FIFO (FifoThreadSelector), che dovra' gestire tutti i thread che hanno la stessa priorita'.
ReadersPreferedGuardian 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
ReaderWriter La classe simula la regolazione di un flusso di thread (SemaphoredThread), che necessitano di accedere ad una risorsa, controllata dalla classe, in lettura/scrittura, attraverso i metodi leggi/scrivi.
Semaphore Semaforo per la protezione in mutua esclusione di una risorsa condivisa da piu' thread, i quali, per accedere alla risorsa devono eseguire l'opearazione di down() sul semaforo, il quale in base al suo stato (e quindi agli altri thread presenti o meno), quando il thread potra' proseguire in tranquillita', senza preoccuparsi di situazioni critiche; una volta terminato l'utilizzo della risorsa, il thread dovra' informare il semaforo eseguendo sullo stesso l'oprazione di up() private Semaphore sem = new Semaphore(); ... sem.down(); // da questo punto in poi si puo' entrare nella regione critica // REGIONE CRITICA sem.up(); // il thread informa il semaforo, che sta' uscendo dalla regione critica
SemaphoredThread La classe implemnta uno speciale tipo di thread, il cui flusso di esecuzione viene assoggettato a uno o piu' semafori anche innestati fra di loro.
TestFifoSelector La classe TestFifoSelector e' una classe creata ad hoc per il test del FifoThreadSelector
TestPrioritySelector La classe ThreadReaderWriterPriority e' una classe creata ad hoc per il test del PriorityThreadSelector
TestReaderWriter La classe TestReaderWriter e' una classe Runnable creata ad hoc per ottenere un flusso d'esecuzione adatto per il test della classe ReaderWriter; la classe simula il comportamento di un lettore/scrittore che vuole accedere alla risorsa controllata dal ReaderWriter
WritersPreferedGuardian 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.
 

Exception Summary
SemaphoredThreadRequireException L'eccezione viene sollevata quando l'applicazione necessita di un SemaphoredThread, per eseguire determinati metodi particolari sincronizzati con l'uso di semafori