El subproceso nativo a nivel del sistema operativo se libera tan pronto como termina el hilo (aproximadamente cuando termina run()
), pero el objeto de hilo vive, como cualquier otro objeto, hasta que se vuelve inalcanzable y el recolector de basura tiene ganas de correr.
Editar: También podría ser interesante saber que Thread
(en
de Sun
aplicación de Oracle, anywho) tiene un método privado llamado por la máquina virtual cuando el hilo termina, que los nulos agresivamente varios campos, incluyendo la que se refiere al Runnable
establecido por el constructor Thread(Runnable)
. Por lo tanto, incluso si conserva una referencia al Thread
, las cosas que no necesita después de finalizar la ejecución serán liberadas, independientemente.
Si el proceso es tan simple como su ejemplo, y se garantiza que cada subproceso finalizará antes de que comience el siguiente, ¿puede simplemente reutilizar un hilo? Supongo que tu programa real es más complejo que eso, pero solo estoy lanzando la sugerencia. –
@musicfreak: Sabes, acabas de mencionar un punto muy bueno. Por alguna razón he estado haciendo eso en otros lugares y creo que esta situación se veía un poco diferente, pero descubrí una forma de aplicar esta técnica a mi problema. ¡Gracias! – Dave