Maison  >  Article  >  Java  >  Java utilise la fonction interruption() de la classe Thread pour interrompre l'exécution du thread

Java utilise la fonction interruption() de la classe Thread pour interrompre l'exécution du thread

PHPz
PHPzoriginal
2023-07-24 13:41:121452parcourir

Java utilise la fonction interruption() de la classe Thread pour interrompre l'exécution d'un thread

En programmation multi-thread, il est parfois nécessaire d'interrompre le thread en cours d'exécution. En Java, vous pouvez utiliser la fonction interruption() de la classe Thread pour interrompre l'exécution d'un thread. Cet article explique comment utiliser la fonction interrompue() et fournit des exemples de code. La fonction

interrupt() est utilisée pour interrompre l'exécution des threads. L’appel de cette fonction définira le bit d’indicateur d’interruption du thread sur true, mais le thread ne terminera pas immédiatement l’exécution à ce moment-là. L'opération d'interruption spécifique est décidée par le développeur. Vous pouvez utiliser la méthode isInterrupted() du thread pour vérifier le bit d'indicateur d'interruption et quitter l'exécution du thread au moment approprié.

Ce qui suit est un exemple de code qui utilise la fonction interruption() pour interrompre un thread :

public class MyThread extends Thread {
    public void run() {
        while (!isInterrupted()) {
            // 线程的执行逻辑
            System.out.println("Thread is running...");
        }
        System.out.println("Thread is interrupted, exiting...");
    }

    public static void main(String[] args) throws InterruptedException {
        MyThread thread = new MyThread();
        thread.start();

        // 主线程休眠一段时间后中断子线程
        Thread.sleep(1000);
        thread.interrupt();
    }
}

Dans le code ci-dessus, nous définissons une classe de thread MyThread qui hérite de la classe Thread. Dans la méthode run(), nous utilisons une boucle while pour simuler la logique d'exécution du thread. Avant le début de chaque boucle, nous utilisons la méthode isInterrupted() pour vérifier le bit d'indicateur d'interruption du thread. Si c'est vrai, quittez la boucle. Lorsque le fil est interrompu, un message d'invite sera affiché. Dans la méthode main(), nous créons un objet thread MyThread et utilisons la méthode start() pour démarrer le thread. Ensuite, après que le thread principal se soit endormi pendant 1 seconde, la méthode interruption() de l'objet thread est appelée pour interrompre l'exécution du thread.

Exécutez le code ci-dessus et vous pouvez voir le résultat suivant :

Thread is running...
Thread is running...
Thread is running...
Thread is running...
Thread is running...
Thread is interrupted, exiting...

Comme le montre le résultat, le thread a quitté l'exécution immédiatement après avoir été interrompu. Ce qu'il faut noter ici, c'est que lorsque le thread est interrompu, si le thread est dans un état bloqué (par exemple, les méthodes sleep(), wait(), etc. sont appelées), une InterruptedException sera levée. Après avoir détecté l'exception, vous pouvez la gérer en conséquence, selon vos besoins.

Dans le développement réel, la fonction interruption() peut être utilisée pour arrêter le thread en douceur. En jugeant le bit de l'indicateur d'interruption à la position appropriée dans la méthode run() et en sortant de la boucle ou en traitant une autre logique, le thread peut arrêter l'exécution à temps après avoir reçu le signal d'interruption pour éviter un gaspillage inutile de ressources.

Pour résumer, l'exécution d'un thread peut être interrompue à l'aide de la fonction interruption() de la classe Thread de Java. En jugeant raisonnablement l'indicateur d'interruption, nous pouvons obtenir un arrêt progressif du thread. Lors de l’écriture de programmes multithread, il est très important de comprendre et de maîtriser l’utilisation de la fonction interruption().

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!

Déclaration:
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