2011-09-02 7 views
6

El número de hilo (id) aumenta cuando termina el hilo y se crea un nuevo hilo. ¿Java 7 simplemente disfruta incrementar los números o estoy haciendo algo mal?Java 7: ¿Reutilización de hilo? (desconectar - reconectar)

Estoy construyendo una aplicación de servicio usando Java 7 que crea un nuevo hilo cuando se establece una conexión y luego da servicio a la conexión. Cuando el servicio recibe un mensaje de cierre, sale de un bucle y permite completar el código en el hilo. Por lo tanto, la vida del hilo está supuestamente terminada, según lo entiendo (al igual que cualquier objeto instancia). Java 7 no utiliza un Thread.stop() o Thread.destroy() ni nada por el estilo. (No desde la v5, creo).

Tengo una interfaz con botones para "Abrir conexión", "Cerrar conexión" y "Enviar mensaje" y las instrucciones println correspondientes en el hilo para que pueda ver lo que está pasando. Una de las variables que imprimo es Thread.currentThread(). Cuando abro la primera conexión, el actualThread() es Thread [Thread-0,5, main]. Cerré la conexión y saqué el mensaje del ciclo indicando que el hilo [Thread-0,5, principal] está terminando.

Bien, ahora ha vuelto al punto uno, ¿verdad? Sin hilos.

Hago clic para volver a conectar e ingresar thread [Thread-1,5, main]. ¿Mira eso? "Thread-1" en lugar de "Thread-0". Cada vez que lo hago, el número se incrementa en 1.

Comentario re (pregunta lado si no es mucha molestia ¿Cuál es la "5, la principal" significa.?): Tope de la rosca: Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?.

Respuesta

2

Thread-0,5, la principal

0: id

5: prioridad

principal: nombrar

ID del tema es long; si creamos un millón de hilos por segundo, después de 300 mil años, la identificación se desbordará.

3

El número que se refieren no significa que el número actual de subprocesos que se ejecutan ... Thread- "n" es sólo un número autogenerado utiliza cuando no se proporciona explícitamente un nombre al hilo. Cada instancia de Thread que cree sin un nombre tendrá n incrementado en 1. Este número solo se usa para identificar una instancia de subproceso.

Sin embargo, si usa un grupo de subprocesos, la tarea que envió a la ejecución podría ejecutarse en un subproceso que se utilizó anteriormente para otras tareas.

Además, esto no es nada particular de Java 7. Java 6 tenía exactamente el mismo comportamiento (y sospecho que también las versiones anteriores).

+0

Gracias. Y oye - ¡regocíjate!Ahora tengo suficientes puntos para votar su respuesta. ¿Sabes qué significa "5, principal"? –

+0

Aunque creo que esto significa que la identificación del hilo será como la cantidad de hamburguesas vendidas en McDonald's. Espero que al menos estén usando BigInteger. –

+0

Sospecho que el sufijo "5, principal" debe ser adjuntado por quien creó (o mantiene) el hilo. –

0

número Thread (id) se incrementa cuando el hilo se termina

No.

y un nuevo hilo creado.

Sí.

+0

Gracias por la aclaración. Puedo ver que no había pensado en eso al escribir la pregunta. –