Fragenanalyse
Die Antwort lautet C
A: Der Thread verwendet die Methode „sleep()“, um den Thread für einen bestimmten Zeitraum anzuhalten, anstatt ihn zu beenden.
B: Wenn ein neuer Thread erstellt wird, ist dies der Fall Keine Auswirkung auf den vorherigen Thread
C: Eine Ausnahme auslösen und der Thread wird beendet
D: Es handelt sich nicht um eine Beendigung, sondern um eine vorzeitige Beendigung. Der Prozess ist die grundlegendste Einheit der Ressourcenzuteilung, die von demselben Prozess erstellt wird Diese Ressourcen. Wenn ein Thread eine höhere Priorität hat, werden die Ressourcen anderer Threads beansprucht, was dazu führt, dass andere Threads keine Ressourcen mehr haben, was zu einer Blockierung führt
1 Die Ausführungsmethode wird ausgeführt und der Thread endet normal
2. Der Thread löst eine nicht abgefangene Ausnahme oder einen Fehler aus
3. Rufen Sie direkt die Stop-Methode des Threads auf, um den Thread zu beenden (nicht empfohlen, da dies leicht zu einem Deadlock führen kann)
Drei Möglichkeiten, den Thread zu beenden
①Verwenden Sie das Flag-Bit, um den Thread zu verlassen.
② Verwenden Sie die Stop-Methode, um den Thread zwangsweise zu beenden.
③Verwenden Sie Interrupt, um den Thread zu beenden
public class ThreadSafe extends Thread { public volatile boolean exit = false; public void run() { while (!exit){ //do something } } }
2 Verwenden Sie die Stop-Methode, um den Thread zwangsweise zu beenden Verwenden Sie thread.stop() direkt im Programm, um das Beenden des Threads zu erzwingen. Die Stop-Methode ist jedoch so, als würde Sie den Computer plötzlich ausschalten, anstatt ihn gemäß dem normalen Verfahren herunterzufahren. Die wichtigsten unsicheren Aspekte sind: Erstellen Sie nach dem Aufruf von thread.stop() einen untergeordneten Thread. Der Thread löst einen ThreadDeatherror-Fehler aus und gibt alle vom untergeordneten Thread gehaltenen Sperren frei.
3. Verwenden Sie Interrupt, um den Thread zu beenden.
public class MyThread extends Thread { @Override public void run() { try { for (int i = 0; i < 500000; i++) { if (interrupted()) { System.out.println("已经是停止状态了"); throw new InterruptedException();//中断异常 } System.out.println("i=" + (i + 1)); } System.out.println("我在for下面"); } catch (InterruptedException e) { System.out.println("进run方法中的catch了!"); e.printStackTrace(); } } }
(2) Der Thread befindet sich in einem blockierten Zustand : Wenn die Schlafmethode, das Warten auf die Synchronisationssperre und der Empfänger im Socket verwendet werden, akzeptieren und andere Methoden, rufen Sie die Interrupt()-Methode des Threads auf
public class ThreadInterrupt extends Thread { public void run() { try { sleep(50000); // 延迟50秒 } catch (InterruptedException e) { System.out.println(e.getMessage()); } } public static void main(String[] args) throws Exception { Thread thread = new ThreadInterrupt(); thread.start(); System.out.println("在50秒之内按任意键中断线程!"); System.in.read(); thread.interrupt(); thread.join(); System.out.println("线程已经退出!"); }
Das obige ist der detaillierte Inhalt vonMehrere Möglichkeiten zum Beenden von Java-Threads und Analyse von Beispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!