Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/02/2010, 16:44
moisesvs
 
Fecha de Ingreso: junio-2009
Mensajes: 65
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Productor/Consumidor en Java

Creo que lo he conseguido!
Código:
import java.util.*;

public class Intercambio extends Thread{
		//0 Consumidor
		//1 Productor
		private int tipo;
		private static Proceso permisosponer = new Proceso();
		private static Proceso permisosquitar = new Proceso();
		private static boolean producido = false;
		private static int num_producido = 0;
		
		
		public Intercambio(int ptipo)
		{
			this.tipo=ptipo;
			
			
		}
		
		public void run ()
		{
			if(this.tipo==0)
				for(;;)
					get();
			else
				for(;;)
					put();
		}
		
		public void get()
		{
			try{
				synchronized (permisosquitar)
				{
					  if (!(this.producido))
					  {
						  	 System.out.println("CONSUMIDOR ME DUERMO...");
						     permisosquitar.wait();
					  }
				}
				synchronized (permisosponer)
				{
	
						System.out.println("CONSUMIDOR CONSUMIENDO!!"+"\t"+this.num_producido);
						
						this.producido=false;
						permisosponer.notify();
				}

			}catch (InterruptedException e)
			{
				System.out.println("PROBLEMA AL PARAR EL HILO");
			}
		}
		public void put()
		{
			try{
					synchronized (permisosponer)
					{
					  if (this.producido)
					  {
						  	System.out.println("\t\tPRODUCTOR ME DUERMO...");
						    permisosponer.wait();
					  }
					}
					synchronized (permisosquitar)
					{
					  System.out.println("\t\tPRODUCTOR ESCRIENDO!");
					  this.num_producido=(int)Math.random();
					  this.producido=true;
					  permisosquitar.notify();
					}
			}catch (InterruptedException e)
			{
				System.out.println("PROBLEMA AL PARAR EL HILO");
			}
		}
}

Última edición por moisesvs; 22/02/2010 a las 16:58