//************************************************************************/ // definizione di una classe che rappresenta un processo: deve ereditare / // dalla classe di libreria Thread / //************************************************************************/ public class GiocatoreGolf extends Thread { // variabile che rappresenta il monitor private CampoGolf m; int t; // tipo di giocatore (0=esperto, 1=principiante) int p; // numero di palline richieste String nome; // costruttore della classe public GiocatoreGolf (CampoGolf m, int t, int p, String nome) { // super(nome+":"+((t==0)?'e':'p')+":"+p); //Il nome sarˆ ad esempio: // giocatorex:p:n¡palline richieste // inizializzazione della variabile monitor this.m = m; // altre inizializzazioni this.t = t; this.p = p; this.nome = nome+":"+((t==0)?'e':'p')+":"+p; } // parte concorrente che rappresenta il codice del processo public void run() { m.richiedi(t, p, nome); System.out.println(nome+" vado a giocare a golf"); // usa il campo da golf try { Thread.sleep((int)(Math.random() * 500)); } catch (InterruptedException ie) {} m.rilascia(t, p, nome); System.out.println(nome+" ho finito e me ne vado"); } }