/** * Creazione di un Monitor per l'allocazione globale * delle risorse */ public class GestoreBastoncini { protected byte num_bast[]={2,2,2,2,2}; public synchronized void acquisizione_bastoncini(int who){ while (num_bast[who]<2){ try{ wait(); }catch(InterruptedException ie){} }// fine while num_bast[(who+1)%5]--; // Prendiamo il bastoncino a destra num_bast[(who+4)%5]--; // Prendiamo il bastoncino a sinistra }// fine acquisizione_bastoncini public synchronized void rilascio_bastoncini(int who){ num_bast[(who+1)%5]--; // Rilasciamo il bastoncino a destra num_bast[(who+4)%5]-- // Rilasciamo il bastoncino a sinistra notifyAll(); }// fine acquisizione_bastoncini }// fine classe |
Listato 4 Realizzazione di un Monitor |