Heim > Java > javaLernprogramm > Hauptteil

Java-Thread-Unterbrechung unterbrechen und stoppen

王林
Freigeben: 2019-11-26 14:53:40
nach vorne
2684 Leute haben es durchsucht

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();// 中断线程的阻塞状态
Nach dem Login kopieren

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();
                    }
                }
            }
        }
    }
Nach dem Login kopieren

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();

    }

}
Nach dem Login kopieren

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
...
Nach dem Login kopieren

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()  // 终止线程的执行
Nach dem Login kopieren

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();
                    }
                }
            }
        }
    }
Nach dem Login kopieren

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();
    
        }
    
    }
Nach dem Login kopieren

Ausgabeergebnis:

...
pbteach-01----9
pbteach-01----10
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage