¿Cómo se mata un java.lang.Thread
en Java?
Ver este hilo de Sun sobre por qué han desaprobado Thread.stop()
. Entra en detalle sobre por qué este era un mal método y lo que se debe hacer para detener de forma segura los hilos en general.
La forma que recomiendan es utilizar una variable compartida como bandera que pide al hilo de fondo que se detenga. Esta variable puede ser establecida por un objeto diferente que solicite la finalización del hilo.
Generalmente no...
Le pides que interrumpa lo que está haciendo usando Thread.interrupt() (enlace javadoc)
Una buena explicación de por qué está en el javadoc aquí (enlace java technote)
Una forma es estableciendo una variable de clase y utilizándola como centinela.
Class Outer {
public static volatile flag = true;
Outer() {
new Test().start();
}
class Test extends Thread {
public void run() {
while (Outer.flag) {
//do stuff here
}
}
}
}
Establezca una variable de clase externa, es decir, flag = true en el ejemplo anterior. Ponerla en false para 'matar' el hilo.