FACULTAD DE CIENCIAS DE LA COMPUTACION
 
 
 

Filosofos con semaforos

package Semaforo;
class FilosofosPrueba
{
Filosofos Filosofos[]=new Filosofos[25];
SemaforoGeneral tenedores[]=new SemaforoGeneral[5];
SemaforoGeneral contador=new SemaforoGeneral(4);
int numfilosofos=5;
public FilosofosPrueba()
{
for (int i=0; i<numfilosofos;i++)
{
tenedores[i]=new SemaforoGeneral(i);
}
for(int i=0;i<numfilosofos;i++)
{
Filosofos[i]=new Filosofos(i,contador,tenedores[i],tenedores[(i+1)%numfilosofos]);
Filosofos[i].start();

}
}
public static void main(String a[])
{
FilosofosPrueba p = new FilosofosPrueba();
}

}

 

package Semaforo;
public class Filosofos extends Thread
{
int quiensoy=0;
SemaforoGeneral tender, tenizq, cont;
int numero=10;
public Filosofos(int quiensoy1, SemaforoGeneral cont1, SemaforoGeneral tender1, SemaforoGeneral tenizq1)
{
quiensoy=quiensoy1;
tender=tender1;
tenizq=tenizq1;
cont=cont1;
}
public void run(){
//System.out.println("Filosofo " + quiensoy + " pensando");
for(int i=0; i<numero; i++)
{
System.out.println("Filosofo " + quiensoy + " pensando");
cont.WAIT();
tender.WAIT();
tenizq.WAIT();
System.out.println("Filosofo " + quiensoy + " comiendo");
try{
Thread.sleep(1000);
}
catch (Exception e){}
System.out.println("Filosofo " + quiensoy + " termina de comer");
tender.SIGNAL();
tenizq.SIGNAL();
cont.SIGNAL();
}
}
}

Ejecucion del programa de Filosofos con semaforos

Imagen Filosofos


 




 
     

 

 

 

 

     
Hosted by www.Geocities.ws

1