Maison > Java > javaDidacticiel > le corps du texte

Interruption et arrêt du thread Java

王林
Libérer: 2019-11-26 14:53:40
avant
2686 Les gens l'ont consulté

Interruption et arrêt du thread Java

méthode d'interruption

Lorsque nous appelons la méthode sleep ou la méthode join d'un thread, nous pouvons mettre certains threads en état d'attente et appeler le courant La méthode interruption() du thread peut interrompre l'état de blocage. La méthode d'interruption ne laissera pas le thread se terminer.

public void interrupt();// 中断线程的阻塞状态
Copier après la connexion

Cette méthode lève une InterruptedException exception.

Recommandations vidéo d'apprentissage liées à Java : cours Java

Cas : démontre l'état d'attente de l'interruption du sommeil

Classe de thread :

 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();
                    }
                }
            }
        }
    }
Copier après la connexion

Classe de test :

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

    }

}
Copier après la connexion

Résultat de sortie :

...
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
...
Copier après la connexion

Grâce à la sortie de la console, nous pouvons voir que la méthode interrompue ne termine pas le thread en cours, mais change l'état de blocage du thread Interrompu , après avoir interrompu l'état de blocage, le thread pbteach-01 continue de s'exécuter.

méthode stop

Appelez la méthode stop du thread pour terminer l'exécution du thread.

public final void stop()  // 终止线程的执行
Copier après la connexion

Classe de thread

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();
                    }
                }
            }
        }
    }
Copier après la connexion

Classe de test :

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();
    
        }
    
    }
Copier après la connexion

Résultat de sortie :

...
pbteach-01----9
pbteach-01----10
Copier après la connexion

Il n'y a aucune sortie anormale dans la console , le programme se termine et le thread "pbteach-01" ne continue pas son exécution.

Articles et tutoriels connexes recommandés : Introduction à la programmation Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal