Kaip nužudyti java.lang.Thread
"Java" programoje?
Žr. šį Sun gija apie tai, kodėl jie panaikino Thread.stop()
. Jame išsamiai aptariama, kodėl šis metodas buvo blogas ir ką apskritai reikėtų daryti norint saugiai sustabdyti gijas.
Jie rekomenduoja naudoti bendrą kintamąjį kaip vėliavėlę, kuri prašo fono giją sustabdyti. Tada šį kintamąjį gali nustatyti kitas objektas, prašantis nutraukti giją.
Paprastai jūs neturite..
Paprašykite, kad ji nutrauktų bet kokią veiklą, naudodami Thread.interrupt() (javadoc nuoroda)
Geras paaiškinimas, kodėl taip yra, pateiktas javadoc čia (java technote nuoroda).
Vienas iš būdų - nustatyti klasės kintamąjį ir naudoti jį kaip sargybinį.
Class Outer {
public static volatile flag = true;
Outer() {
new Test().start();
}
class Test extends Thread {
public void run() {
while (Outer.flag) {
//do stuff here
}
}
}
}
Nustatykite išorinį klasės kintamąjį, t. y. aukščiau pateiktame pavyzdyje flag = true. Nustatykite jį į false, kad 'užmuštumėte' giją.