public class Productor extends Thread{
private ArrayList lista;
private int max_size;
private int num;
private Random random=new Random();
public Productor(ArrayList lista,int num, int max_size) {
this.lista=lista;
this.max_size=max_size;
this.num=num;
}
public void run() {
int tiempoInicial=400;
int tiempoFinal=800;
while(true) {
try {
int elemento=random.nextInt(1000)+1;
int tiempoRetardo=random.nextInt((tiempoFinal-tiempoInicial)+1)+tiempoInicial;
Thread.sleep(tiempoRetardo);
synchronized(lista) {
while(lista.size()>=max_size) {
System.out.println("Productor "+this.num+": Lista llena. Esperando espacio...");
lista.wait();
}
lista.add(elemento);
//lista.notify(); // Notificar a un consumidor que hay un nuevo elemento disponible
System.out.println("Productor "+this.num+" produjo: "+elemento);
lista.notifyAll(); // Notificar a todos los consumidores que hay un nuevo elemento disponible
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}