Programacion Concurrente
  Misioneros
 

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);
       }
}

 
   
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis