Maison  >  Article  >  Java  >  Java utilise la fonction stop() de la classe Thread pour mettre fin de force à l'exécution du thread.

Java utilise la fonction stop() de la classe Thread pour mettre fin de force à l'exécution du thread.

王林
王林original
2023-07-26 09:28:481388parcourir

Java utilise la fonction stop() de la classe Thread pour terminer de force l'exécution d'un thread

Dans la programmation multi-thread Java, nous devons parfois terminer de force un thread en cours d'exécution. Java fournit la fonction stop() de la classe Thread pour implémenter l'arrêt forcé des threads. Cet article présentera l'utilisation de la fonction stop() et fournira des exemples de code pour illustrer.

Avant d'introduire la fonction stop(), examinons d'abord plusieurs méthodes courantes de la classe Thread :

  • start() : Démarrez le thread et faites-le entrer dans un état exécutable.
  • run() : Définissez les tâches à effectuer par le thread. La méthode run() sera automatiquement appelée après le démarrage du thread.
  • sleep() : laisse le fil de discussion actuel dormir pendant la durée spécifiée.
  • interrupt() : Interrompt l'exécution du thread.
  • join() : attendez que les autres threads terminent leur exécution avant d'exécuter le thread en cours. La fonction

stop() est une méthode abandonnée de la classe Thread. Sa fonction est d'interrompre immédiatement un thread et de lever une exception ThreadDeath. Dans le développement réel, il n'est pas recommandé d'utiliser la fonction stop() pour terminer le thread, car cela pourrait empêcher certaines ressources du thread d'être libérées correctement pendant l'exécution, provoquant ainsi certains problèmes. Cependant, par souci d’exhaustivité, nous fournissons un exemple pour démontrer l’utilisation de la fonction stop().

L'exemple de code est le suivant :

public class StopThreadDemo extends Thread {
    public void run() {
        try {
            // 让线程休眠10秒
            Thread.sleep(10000);
            System.out.println("线程执行完毕!");
        } catch (InterruptedException e) {
            System.out.println("线程中断异常!");
        }
    }

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

        // 等待3秒后强制终止线程
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        thread.stop(); // 强制终止线程的执行
        System.out.println("主线程执行完毕!");
    }
}

Dans le code ci-dessus, nous avons créé une classe nommée StopThreadDemo, héritée de la classe Thread, et remplacé la méthode run(). Dans la méthode run(), nous laissons le thread dormir pendant 10 secondes, puis générons un message indiquant que l'exécution du thread est terminée.

Dans la méthode main(), nous créons une instance de StopThreadDemo et appelons la méthode start() pour démarrer le thread. Ensuite, nous laissons le thread principal dormir pendant 3 secondes, puis appelons la méthode stop() pour mettre fin de force à l'exécution du thread.

Exécutez le code ci-dessus et le résultat est le suivant :

线程中断异常!
主线程执行完毕!

Comme le montre le résultat, lorsque le thread principal appelle la méthode stop() pour terminer de force le thread, le thread arrêtera immédiatement l'exécution et lancera un ThreadDeath exception. Bien que nous ayons détecté cette exception et généré un message, cette exception est en réalité irrécupérable, il n'est donc pas recommandé d'utiliser la fonction stop() pour terminer le thread.

Résumé :
Dans la programmation multithread Java, nous utilisons généralement la méthode interruption() pour interrompre l'exécution d'un thread. Étant donné que la méthode interruption() déclenchera l'indicateur d'interruption du thread, nous pouvons vérifier l'indicateur d'interruption dans la méthode run() du thread et terminer l'exécution du thread si nécessaire. La fonction stop() est une méthode abandonnée, qui peut facilement causer des problèmes et dont l'utilisation n'est pas recommandée.

Par conséquent, dans le développement réel, nous devrions éviter d'utiliser la fonction stop() pour terminer de force l'exécution du thread, mais utiliser une manière plus appropriée pour terminer le thread.

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