El Barbero Dormilon
public class barberia { private int nSillasEspera; private intnSillasEsperaOcupadas = 0; private boolean sillaBarberoOcupada = false; private boolean finCorte = false; private boolean barberoDormido = false; //JAVA: sólo puede haberN_Sillas_Espera_max hebras //esperando dentro del monitor a que le toque.
public barberia(int nSillasEspera) {
this. NSillasEspera = nSillasEspera;
}public synchronized boolean entrar(int clienteId)
throws InterruptedException { if (nSillasEsperaOcupadas == nSillasEspera) {// Si no hay sillas libres, me voy sin cortar el pelo System.out.println ("---- El cliente " + clienteId + " se va sin cortarse el pelo");return false; } else { //Me quedo esperando si la silla del barbero está //ocupada nSillasEsperaOcupadas ++;System.out.println ("---- El cliente " + clienteId + " se sienta en la silla de espera"); while (sillaBarberoOcupada) {wait();}//Desocupo la silla de espera nSillasEsperaOcupadas --;
//Me siento en la silla del barbero sillaBarberoOcupada = true;...
Regístrate para leer el documento completo.