elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  modelo productor consumidor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: modelo productor consumidor  (Leído 2,179 veces)
Juanma91

Desconectado Desconectado

Mensajes: 43


Ver Perfil
modelo productor consumidor
« en: 31 Enero 2014, 19:33 pm »

No consigo entender porque siempre esta esperando mi programa. quiero conseguir el efecto "ping-pong" con el modelo productor consumidor pero se queda siempre en wait(); a que se debe?

facilito micodigo:

Código:
public class Cola {

    private String numero;
    private boolean disponible=false;

    public synchronized String get() {
       while (disponible == false) {
            try {
                wait();
            } catch (InterruptedException e) {
            }
        }
        disponible = false; //lo va a consumir
        notifyAll();

        return numero;
    }

    public synchronized void put(String valor) {
        while (disponible == true) {
            try {
                wait();
            } catch (InterruptedException e) {
            }
            numero = valor;
            disponible = true; //lo va a consumir
            notifyAll();

        }
    }

Código:
public class Consumidor extends Thread{
    private Cola cola;
    private String n;

    public Consumidor(Cola cola) {
        this.cola = cola;
    }
    
    @Override
    public void run(){
        while(true){
            n = cola.get();
            System.out.println(n);
        }
    }

Código:
public class Productor extends Thread {

    private Cola cola;
    private String texto;
    private String texto2;
    private String actual;

    public Productor(Cola cola, String texto, String texto2) {
        this.cola = cola;
        this.texto = texto;
        this.texto2 = texto2;
        this.actual = texto2;
    }

    @Override
    public void run() {
        while (true) {
                if (!actual.equals(texto2)) {

                    cola.put(texto2);
                    actual = texto2;
                } else {

                    cola.put(texto);
                    actual = texto;
                }

        }
    }

main(){
Cola cola= new Cola();
Productor p= new Productor(cola,"ping","pong);
Consumidor c= new  Consumidor(cola);
p.start();
c.start();


« Última modificación: 31 Enero 2014, 19:35 pm por Juanma91 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines