FACULTAD DE CIENCIAS DE LA COMPUTACION
 
 
 

Estacionamiento

package Semaforo;

public class Coche extends Comun implements Runnable {
int i;

public Coche (int _i) {
i = _i;
}

public void run() {
try {
Thread.sleep (1000);
} catch (Exception e) {}
System.out.println ("Llega el coche "+ i);
noHayCoche.WAIT();
boton.SIGNAL();
barreraAbierta.WAIT();
System.out.println ("Coche "+i+" pasando.");
cocheHaPasado.SIGNAL();
noHayCoche.SIGNAL();
try {
Thread.sleep (1000);
} catch (Exception e) {}
numCoches.SIGNAL();
System.out.println ("Coche "+i+" saliendo.");
}
}

package Semaforo;

public class Barrera extends Comun implements Runnable {

public void run() {
while (true) {
numCoches.WAIT();
ticketExpendido.WAIT();
barreraAbierta.SIGNAL();
System.out.println ("Levantando Barrera.");
cocheHaPasado.WAIT();
System.out.println ("Bajando Barrera.");
barreraBajada.SIGNAL();
}
}
}

package Semaforo;

public class Coche extends Comun implements Runnable {
int i;

public Coche (int _i) {
i = _i;
}

public void run() {
try {
Thread.sleep (1000);
} catch (Exception e) {}
System.out.println ("Llega el coche "+ i);
noHayCoche.WAIT();
boton.SIGNAL();
barreraAbierta.WAIT();
System.out.println ("Coche "+i+" pasando.");
cocheHaPasado.SIGNAL();
noHayCoche.SIGNAL();
try {
Thread.sleep (1000);
} catch (Exception e) {}
numCoches.SIGNAL();
System.out.println ("Coche "+i+" saliendo.");
}
}

package Semaforo;

public class Comun {
protected static SemaforoBinario boton = new SemaforoBinario(0);
protected static SemaforoBinario ticketExpendido = new SemaforoBinario(0);
protected static SemaforoBinario barreraAbierta = new SemaforoBinario(0);
protected static SemaforoBinario cocheHaPasado = new SemaforoBinario(0);
protected static SemaforoBinario noHayCoche = new SemaforoBinario(1);
protected static SemaforoBinario barreraBajada = new SemaforoBinario(1);
protected static SemaforoGeneral numCoches = new SemaforoGeneral(5);
}

package Semaforo;

public class SemParking {
public static void main (String args[]) {
for (int i=0; i<5; i++)
new Thread (new Coche (i)).start();
new Thread (new Maquina()).start();
new Thread (new Barrera()).start();
}
}

Ejecucion del programa:

Parking


 




 
     

 

 

 

 

     
Hosted by www.Geocities.ws

1