Hoe dood je een java.lang.Thread
in Java?
Zie deze thread van Sun over waarom ze Thread.stop()
deprecated hebben. Het gaat in detail over waarom dit een slechte methode was en wat er gedaan moet worden om threads veilig te stoppen in het algemeen.
De manier die ze aanbevelen is om een gedeelde variabele te gebruiken als een vlag die de achtergronddraad vraagt om te stoppen. Deze variabele kan dan ingesteld worden door een ander object dat vraagt om de thread te beëindigen.
Over het algemeen doe je niet...
Je vraagt het om wat het ook aan het doen is te onderbreken met Thread.interrupt() (javadoc link)
Een goede uitleg over waarom staat in de javadoc hier (java technote link)
Eén manier is door een klassevariabele in te stellen en die als schild te gebruiken.
Class Outer {
public static volatile flag = true;
Outer() {
new Test().start();
}
class Test extends Thread {
public void run() {
while (Outer.flag) {
//do stuff here
}
}
}
}
Stel een externe klasse variabele in, bijv. flag = true in het bovenstaande voorbeeld. Stel het in op false om 'kill' de thread.