2011-11-29 22 views
6

Quiero ser capaz de crear múltiples hilos y enviar datos a un hilo específico en función de lo que recibe el programa principal.Enviar datos a un hilo específico

Básicamente estoy enviando un paquete a un programa receptor que contendrá un número. Este número se usa para determinar con qué hilo se quiere comunicar. ¿Cómo puedo enviar ese paquete a un hilo con ese mismo número?

Ejemplo: hilos 1,2,3,4 y 5 existen. Mi programa principal recibe un paquete con el número 3. Deseo enviar ese paquete a la secuencia 3.

¿Cómo puedo lograr esto?

+0

¿Por qué no mantiene viva la conexión y luego confía los datos enviados/recibidos a la secuencia que contiene ese socket? –

+0

Estoy haciendo un enrutador virtual (un proyecto de clase) por lo que debe actuar como un enrutador real. Entonces, estos hilos que estoy creando actúan como puertos diferentes para mi enrutador. Nuestros paquetes se envían al puerto real que nuestro programa está escuchando y nuestro programa lo envía a un puerto virtual (hilo). –

Respuesta

6

Cree una cola para cada subproceso y haga que cada subproceso escuche esa cola. Su hilo principal puede poner datos (o un "mensaje") en cada cola.

Simplemente querrá asegurarse de que la estructura de la cola que elija sea segura para el acceso simultáneo (seguro para subprocesos). Algo así como LinkedBlockingQueue debería funcionar bien.

+0

¡Me gusta! ¿Las colas se crean en el hilo principal o en los hilos hijo o ambos? –

+1

Donde lo desee, aunque los crearía junto con la creación de cada hilo, lo que significaría que están creados en el hilo principal. A continuación, se accede mediante los subprocesos principal y secundario, con el subproceso principal que envía datos a la cola y el subproceso secundario extrae los datos de la cola. – ziesemer

+0

Aquí hay un ejemplo del patrón productor-consumidor usando BlockingQueues. http://www.javamex.com/tutorials/synchronization_producer_consumer_2.shtml – Luhar

Cuestiones relacionadas