Maison  >  Article  >  Java  >  Comment arrêter gracieusement les threads Java : Thread.stop() est-il toujours une option ?

Comment arrêter gracieusement les threads Java : Thread.stop() est-il toujours une option ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-13 03:47:02839parcourir

How to Gracefully Stop Java Threads: Is Thread.stop() Still an Option?

Arrêter gracieusement les threads Java

Lorsque vous êtes confronté à un thread long et potentiellement incomplet, il peut devenir nécessaire de le terminer de manière contrôlée. Cela évite les interruptions brusques et garantit un processus d'arrêt correct.

L'approche optimale

La méthode recommandée implique d'implémenter un indicateur booléen dans la méthode run() du thread. Lorsque le thread doit être terminé, cet indicateur est défini sur « true » à partir d'une source externe. Cela permet au thread de terminer naturellement son exécution actuelle et de se terminer correctement.

Par exemple :

public class MyThread extends Thread {
    volatile boolean finished = false;

    public void stopMe() {
        finished = true;
    }

    @Override
    public void run() {
        while (!finished) {
            // Perform necessary tasks
        }
    }
}

Approche héritée : Thread.stop()

Une ancienne méthode de terminaison de thread impliquait l’invocation de la méthode Thread.stop(). Cependant, cette approche est désormais considérée comme dangereuse et déconseillée. Contrairement à la méthode du drapeau booléen, Thread.stop() arrête brusquement le thread, laissant potentiellement les objets protégés dans un état instable et provoquant des conséquences imprévisibles.

Par conséquent, l'approche du drapeau booléen reste la solution recommandée pour arrêter les threads Java en douceur. .

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