Como se mata um 'java.lang.Thread' em Java?
Veja isto thread by Sun sobre porque eles depreciaram Thread.stop()
. Ele entra em detalhes sobre porque este foi um método ruim e o que deve ser feito para parar threads com segurança em geral.
A maneira que eles recomendam é usar uma variável compartilhada como uma bandeira que pede ao tópico de fundo para parar. Esta variável pode então ser definida por um objeto diferente solicitando o término da thread.
Geralmente você não't...
Você pede a ele para interromper o que quer que esteja fazendo usando Thread.interrupt() (link javadoc)
Uma boa explicação do porquê está no javadoc aqui (link java technote)
Uma maneira é definir uma variável de classe e usá-la como sentinela.
Class Outer {
public static volatile flag = true;
Outer() {
new Test().start();
}
class Test extends Thread {
public void run() {
while (Outer.flag) {
//do stuff here
}
}
}
}
Defina uma variável de classe externa, ou seja, flag = true no exemplo acima. Defina como falso para 'kill' a thread.