Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/06/2009, 10:00
vertrigo
 
Fecha de Ingreso: agosto-2008
Mensajes: 18
Antigüedad: 16 años, 7 meses
Puntos: 0
Tuberias no funcionan como deberian

Bueno hice una aplicacion para tratar de entender el funcionamiento de las tuberias y para ello he hecho dos clases una productor y otra consumidor el objetivo es que productor genera un numero aleatorio y luego se lo pasa al consumidor para que el haga con ese dato lo que quiera ahora el problema esta en que el numero que envia el productor es diferente al que recibe el consumidor y por mas que reviso no encuentro donde esta el problema este es el codigo de las clases

Clase Principal
Código:
package programa;
import java.io.*;
public class Main {
    public static void main(String[] args) {
      try {
            PipedOutputStream salida = new PipedOutputStream();
            PipedInputStream entrada = new PipedInputStream(salida);    
                Productor app1 = new Productor(salida);
                Consumidor app2 = new Consumidor(entrada);
                    app1.start();
                    app2.start();
      } catch(IOException ex) {
          System.err.println("Error");
      }
    }
}

Clase Productor

Código:
package programa;
import java.io.*;
import java.util.*;
public class Productor extends Thread {
        private PipedOutputStream salida;
        private Random aleatorio;            
    public Productor(PipedOutputStream salida) {
        this.salida = salida;
        aleatorio = new Random();
    }
    public void run() {
        try {
          int numero = aleatorio.nextInt();
                System.out.println("Productor --> "+numero);
                salida.write((int)numero);
        } catch(IOException ex) {
            System.err.println("Error Lectura/Escritura");
        } 
    }
}
Clase Consumidor

Código:
package programa;
import java.io.*;
public class Consumidor extends Thread {
        private PipedInputStream entrada;
    public Consumidor(PipedInputStream entrada) {
        this.entrada = entrada;
    }
    public void run() {
        try {
                System.out.println("Consumidor --> "+entrada.read());
        } catch(IOException ex) {
            System.err.println("Error Lectura/Escritura");
        }
    }
}
Les agradeceria si me ayudaran a encontrar el error en el programa