import java.io.*;
class olla extends MyObject{
private ConditionVariable come = null;
private ConditionVariable cocina = null;
private int misioneros;
public olla(){
come = new ConditionVariable();
cocina = new ConditionVariable();
misioneros = 10;
}
public synchronized void comer(){
misioneros --;
if(misioneros == 0){
System.out.println("Olla vacia");
notify(cocina);
wait(come);
}
else
System.out.println("Comiendo misionero: "+misioneros);
}
public synchronized void cocinar(){
if(misioneros == 0) {
System.out.println("Olla llena");
misioneros = 10;
notify(come);
wait(cocina);
}
else{
//notify(come);
wait(cocina);
}
}
}
class cocinero extends Thread{
private olla o;
public cocinero(olla ol) { this.o=ol; }
public void run(){
for(int i=1; i<=5;i++){
//System.out.println(i);
o.cocinar();
try{sleep((int)(Math.random()*300));}
catch(InterruptedException e){
System.out.println("Error"+ e.toString());
}
}
}
}
class salvaje extends Thread{
private olla o;
public salvaje(olla ol) { this.o=ol; }
public void run(){
for(int i=1; i<=50;i++)
{
//System.out.println(i+"------");
o.comer();
try{sleep((int)(Math.random()*300));}
catch(InterruptedException e){
System.out.println("Error"+ e.toString());
}
}
}
}
class Comida extends MyObject{
public static void main(String []args)throws IOException{
olla olla1=new olla();
cocinero c=new cocinero(olla1);
salvaje s=new salvaje(olla1);
c.start();
s.start();
nap(10000);
System.exit(0);
}
}
|