recherche
MaisonJavajavaDidacticielComment puis-je tuer un thread en toute sécurité en Java sans utiliser « stop() » ?

How Can I Safely Kill a Thread in Java Without Using `stop()`?

Tuer un fil sans utiliser stop()

Dans la programmation multithread, il peut devenir nécessaire de terminer un fil. Bien que la méthode stop() offre une solution abrupte, son utilisation est déconseillée en raison de fuites potentielles de ressources. Cet article examine une méthode alternative pour terminer un thread : l'interruption.

Utilisation de l'interruption

La méthode d'interruption signale à un thread de terminer normalement son exécution. Lorsqu'il est appelé, le thread vérifie son état d'interruption et renvoie une InterruptedException si c'est vrai. Cette exception peut être interceptée et gérée dans la méthode d'exécution du thread, lui permettant de nettoyer les ressources et de se terminer correctement.

Voici un exemple d'utilisation de l'interruption :

public class HelloWorld {

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

            public void run() {
                try {
                    while (!Thread.currentThread().isInterrupted()) {
                        Thread.sleep(5000);
                        System.out.println("Hello World!");
                    }
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
        });
        thread.start();
        System.out.println("press enter to quit");
        System.in.read();
        thread.interrupt();
    }
}

Considérations

  • L'interruption d'un thread amène sleep() et wait() à lancer immédiatement InterruptedException, empêchant une durée indéfinie blocage.
  • Le thread arrêté doit coopérer en vérifiant l'état interrompu et en interceptant les InterruptedExceptions pour quitter la boucle d'exécution.
  • Définir une interruption sur le thread actuel dans le bloc catch est une bonne pratique, mais peut être inutile dans les cas simples.

Code posté

Le code posté présente plusieurs problèmes :

  • Le thread actuel est référencé dans une variable d'instance, ce qui peut ne pas refléter avec précision le thread en cours d'exécution.
  • La vérification de la vivacité du thread renvoie toujours vrai, tandis que l'interruption est effacée l'indicateur d'interruption et est appelé inutilement.

En conclusion, l'utilisation de l'interruption fournit une approche plus contrôlée de la terminaison des threads, garantissant que les ressources sont correctement nettoyées. Cependant, cela nécessite la coopération du fil à arrêter.

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel