


Comment puis-je tuer un thread en toute sécurité en Java sans utiliser « 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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

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
Version chinoise, très simple à utiliser

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

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP

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