Modelo Productor – Consumidor

El modelo productor – consumidor

Código:

public class Cola {
    private int numero;
    private boolean disponible = false;//inicialmente cola vacia

    public int get() {
        if(disponible) {      //hay número en la cola
        disponible = false;   //se pone cola vacía
            return numero;    //se devuelve
        }
          return -1;	//no hay número disponible, cola vacía	
    }

    public void put(int valor) {
        numero = valor;    //coloca valor en la cola 
        disponible = true; //disponible para consumir, cola llena	
    }
}
public class Productor extends Thread {
    private Cola cola;
    private int n;

    public Productor(Cola c, int n) {
        cola = c;
        this.n = n;
    }

    public void run() {
        for (int i = 0; i < 5; i++) {
            cola.put(i); //pone el número
            System.out.println(i + "=>Productor : " + n
                               + ", produce: " + i);
            try {
                sleep(100);
            } catch (InterruptedException e) { }			
            
        }
    }
}
public class Consumidor extends Thread {
    private Cola cola;
    private int n;

    public Consumidor(Cola c, int n) {
        cola = c;
        this.n = n;
    }

    public void run() {
        int valor = 0;
        for (int i = 0; i < 5; i++) {
            valor = cola.get(); //recoge el número
            System.out.println(i + "=>Consumidor: " + n
                               + ", consume: " + valor);
        }
    }
}public class Produc_Consum {
  public static void main(String[] args) {  
    Cola cola = new Cola();
    
    Productor p = new Productor(cola, 1);	
    Consumidor c = new Consumidor(cola, 1);
    
    p.start();
    c.start();

  }
}

Modificar el productor y el consumidor para sincronizarse ( usando wait() y notify() )

¿Qué ocurre si hay varios productores y consumidores? ¿Cómo sincronizar la terminación de todos?

Código del ejercicio Productor_Consumidor

Otro ejemplo similar:

Monitores: ejemplo de productor-consumidor

 

LinkedList

Problema: productores y consumidores

Código de productores y consumidores

¿Cómo sincronizar la terminación de todos?

 

Deja una respuesta