Interrupt-Methode
Wenn wir die Sleep-Methode oder die Join-Methode eines Threads aufrufen, können wir einige Threads in einen Wartezustand versetzen und aufrufen Die aktuelle Interrupt()-Methode des Threads kann den Blockierungsstatus unterbrechen. Die Interrupt-Methode lässt den Thread nicht enden.
public void interrupt();// 中断线程的阻塞状态
Diese Methode löst eine InterruptedException
-Ausnahme aus.
Empfohlene Java-bezogene Lernvideos: Java-Kurs
Fall: Demonstriert den Wartezustand von Interrupt Sleep
Thread-Klasse:
package com.pbteach.thread; public class MyThread extends Thread { @Override public void run() { for(int x = 0 ; x < 100 ; x++) { System.out.println(Thread.currentThread().getName() + "----" + x ); if(x == 10) { try { TimeUnit.SECONDS.sleep(10); // 线程休眠以后,该线程就处于阻塞状态 } catch (InterruptedException e) { e.printStackTrace(); } } } } }
Testklasse:
package com.pbteach.thread; public class ThreadDemo { public static void main(String[] args) { // 创建MyThread线程对象 MyThread t1 = new MyThread(); t1.setName("pbteach-01"); // 启动线程 t1.start(); try { // 主线程休眠2秒 TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } // 中断t1线程的休眠 t1.interrupt(); } }
Ausgabeergebnis:
... pbteach-01----10 java.lang.InterruptedException: sleep interrupted at java.base/java.lang.Thread.sleep(Native Method) at java.base/java.lang.Thread.sleep(Thread.java:339) at java.base/java.util.concurrent.TimeUnit.sleep(TimeUnit.java:446) at com.pbteach.javase.thread.api.demo14.MyThread.run(MyThread.java:14) pbteach-01----11 ...
Durch die Konsolenausgabe können wir sehen, dass die unterbrochene Methode den aktuellen Thread nicht beendet, sondern den Blockierungsstatus des Threads ändert. Unterbrochen Nach der Unterbrechung des Blockierungszustands wird der Thread pbteach-01 weiterhin ausgeführt.
Stoppmethode
Rufen Sie die Stoppmethode des Threads auf, um die Ausführung des Threads zu beenden.
public final void stop() // 终止线程的执行
Thread-Klasse
package com.pbteach.thread; public class MyThread extends Thread { @Override public void run() { for(int x = 0 ; x < 100 ; x++) { System.out.println(Thread.currentThread().getName() + "----" + x ); if(x == 10) { try { TimeUnit.SECONDS.sleep(10); // 线程休眠以后,该线程就处于阻塞状态 } catch (InterruptedException e) { e.printStackTrace(); } } } } }
Testklasse:
package com.pbteach.thread; public class ThreadDemo1 { public static void main(String[] args) { // 创建MyThread线程对象 MyThread t1 = new MyThread(); t1.setName("pbteach-01"); // 启动线程 t1.start(); try { // 主线程休眠2秒 TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } // 终止线程t1的执行 t1.stop(); } }
Ausgabeergebnis:
... pbteach-01----9 pbteach-01----10
Es gibt keine abnormale Ausgabe in der Konsole , wird das Programm beendet und der Thread „pbteach-01“ setzt die Ausführung nicht fort.
Empfohlene verwandte Artikel und Tutorials: Einführung in die Java-Programmierung
Das obige ist der detaillierte Inhalt vonJava-Thread-Unterbrechung unterbrechen und stoppen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!