Heim >Java >javaLernprogramm >Java-Thread-Unterbrechung unterbrechen und stoppen

Java-Thread-Unterbrechung unterbrechen und stoppen

王林
王林nach vorne
2019-11-26 14:53:402743Durchsuche

Java-Thread-Unterbrechung unterbrechen und stoppen

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen