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
Code posté
Le code posté présente plusieurs problèmes :
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!