Java: comunicación entre hilos

erdanblo

Llevo varios dias pegado con esto, y no me funciona, creo que lo entiendo, pero no se que hago mal que no me funciona.

Mi intención es crear una comunicación entre tres hilos a través de Monitores. En total, dos monitores. Dos tuberias.

Tengo cuatro clases, hilo1,hilo2,hilo3 que heredan de Thread y una última Tuberia para establecer la comunicación.

Hilo1 tiene que leer un fichero de texto con números y mandarselo de 1 en 1 a Hilo2. Yo en vez de leer un fichero, lo que he hecho ha sido crear un bucle for, para no complicar la cosa mas aun con I/O.

Hilo2 tiene que recibir 5 números de Hilo1, sumarlos y el resultado mandarlo a Hilo3.

Hilo3 escribe el resultado que recibe de Hilo2 en un fichero de texto.

Como aun no he acabado entre Hilo1 y Hilo2, Hilo3 aun no esta hecho, pero os pongo el código. Aunque eso ahora mismo no me preocupa, además haciendo lo otro, saco el Hilo3.

El problema es que Hilo1 se pone a enviar de 1 en 1 hasta que completa el buffer (5), bien. Pero luego, cuando inicio el Hilo2 ya no consigo que me haga del todo bien lo que yo quiero. Además, solo me coge el último entero que del buffer, y ya vuelve a coger numeros del hilo1, y es cuando el programa se me queda parado (no colgado).

Hilo1
Hilo2
Hilo3
Formulario

Pienso que todo el problema esta en el método recoger() de la clase Tuberia, que no me vacia el buffer antes de empezar de nuevo a llenarlo.

Aquí esta el proyecto de Netbeans:
http://www.mediafire.com/download.php?nxuqow2ood5

erdanblo

Bueno ya he consiguido que me salga, la tuberia quitando el array del buffer, y dejandolo solo como un entero, y luego en el método run() del hilo2 creando un while con una condición que nunca se cumple.

No me gusta demasiado..., asi que ya veré si se puede mejorar.

Luego cuelgo el código funcional.

erdanblo
Hilo2

Por si a alguien le interesa:
http://www.mediafire.com/download.php?nxuqow2ood5

Usuarios habituales

  • erdanblo