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.
|