2010-11-26 11 views

Respuesta

30

A menos que el trabajo del subproceso haya utilizado algunos recursos no administrados (secuencias de red, archivos, etc.) - en cuyo caso debería limpiarlo por sí mismo; no hay nada que deba hacer.

Tenga en cuenta que mantener una referencia al objeto Thread que representa el subproceso no mantendrá con vida el subproceso del sistema operativo subyacente.

+5

También vale la pena señalar que un objeto Thread no siempre representa un hilo del sistema operativo, al igual que un objeto File no siempre representa un archivo "real". –

+0

El hilo está creando dinámicamente clases y cargándolas ... ¿eventualmente se agotará la memoria de ClassLoader? Si es así, ¿cómo lo limpiamos? – Stackee007

+0

@ Stackee007: Necesitará crear un ClassLoader separado específicamente para eso, y permitir que (y todas las clases que se crean) sean basura. Sin embargo, no veo cómo esto es particularmente relevante para la pregunta original. –

10

No es necesario que, hilo termina, una vez run método termina Es ejecución

2

Nopes. El hilo se ejecutará y morirá por sí solo y obtendrá basura recolectada.

2

No, no es necesario. Cuando el hilo sale de su método de ejecución, el hilo entra en el estado de salida.

8

En general, la limpieza se realiza por el recolector de basura. Si los subprocesos usan archivos/sockets, es posible que deba cerrarlos. La mejor práctica es cerrar recursos en el bloque de nivel superior finally en Thread::run.

En realidad, necesita limpiar sus datos, y no el hilo.

Cuestiones relacionadas