FACULTAD DE CIENCIAS DE LA COMPUTACION
 
 
 

Central de camiones con semaforos

import Semaforo.*;

class Central_Camion
{
protected static final SemaforoGeneral ch=new SemaforoGeneral(10);//numero de personas por persona
protected static final SemaforoBinario g=new SemaforoBinario(0);

public static void main(String [] args)
{
terminal m=new terminal(ch,g);
Thread subir_persona=new Thread(new subir_persona(m));
Thread salir_camion=new Thread(new salir_camion(m));
subir_persona.start();
salir_camion.start();
}
}
class terminal
{
SemaforoGeneral ch;
SemaforoBinario g;
public terminal(SemaforoGeneral sg, SemaforoBinario sb)
{
this.ch=sg;
this.g=sb;
}
public void persona(int i)
{
ch.WAIT();
System.out.println("Persona "+i+" sube al camion");
if(ch.valor()==0)
g.SIGNAL();
}

public void salir_camion(int i)
{
g.WAIT();
if(g.valor()==0)
{
System.out.println("\nSalio Camion "+i+" con 10 personas\n");
for(int k=1;k<=10;k++)
ch.SIGNAL();
}

}

}

 

class subir_persona extends Central_Camion implements Runnable{
private terminal m1;
public subir_persona(terminal m){
this.m1=m;
}
public void run() {
for(int i=1;i<=5;i++){
int j=1;
while(j!=11){//cuando hay 10 personas sale el camion
try { Thread.sleep(300); } catch(Exception e) {}
m1.persona(j);
j++;
}
}
}
}

class salir_camion extends Central_Camion implements Runnable{
private terminal m2;
public salir_camion(terminal m){
this.m2=m;
}
public void run(){
for(int i=1;i<=5;i++)//num de camiones que salen
m2.salir_camion(i);
}
}

Ejecucion del Programa:

Camion


 




 
     

 

 

 

 

     
Hosted by www.Geocities.ws

1