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