Maison > Java > javaDidacticiel > Quelles sont les alternatives sûres à Thread.stop() pour terminer les threads en Java ?

Quelles sont les alternatives sûres à Thread.stop() pour terminer les threads en Java ?

Barbara Streisand
Libérer: 2024-11-22 09:55:11
original
470 Les gens l'ont consulté

What are the Safe Alternatives to Thread.stop() for Terminating Threads in Java?

Alternatives à l'utilisation de Thread.stop() pour terminer les threads

Lors de la terminaison des threads, l'utilisation de la méthode Thread.stop() est déconseillée en raison à son caractère potentiellement perturbateur. Envisagez plutôt les alternatives suivantes :

Approche basée sur les interruptions :

Le mécanisme d'interruption vous permet de signaler à un thread qu'il doit terminer son exécution en douceur. Ceci est réalisé en appelant Thread.interrupt(), qui définit l'indicateur d'interruption du thread. Le thread peut alors vérifier périodiquement cet indicateur et, s'il est défini, mettre fin à son exécution.

Par exemple, le code suivant montre comment utiliser l'interruption pour arrêter un thread :

public class InterruptExample {

    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                while (!Thread.currentThread().isInterrupted()) {
                    try {
                        // Perform some task...
                    } catch (InterruptedException e) {
                        // Handle interruption gracefully and terminate execution
                    }
                }
            }
        });

        thread.start();

        // Interrupt the thread after a certain delay
        try {
            Thread.sleep(5000);
            thread.interrupt();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
Copier après la connexion

Dans ce Par exemple, le thread vérifie périodiquement son indicateur d'interruption et se termine lorsqu'il est défini. Notez que l'appel de Thread.interrupted() dans le bloc try effacera l'indicateur, il doit donc être appelé en dehors de la boucle.

Avantages de l'utilisation de l'interruption :

  • Permet l'arrêt progressif des threads.
  • Peut être utilisé pour arrêter les threads qui s'exécutent depuis longtemps tâches.
  • Ne provoque pas le blocage du thread ni la levée d'exceptions.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal