Comment arrêter les threads Java a toujours été un problème courant lors du développement de programmes multithread. De nombreuses personnes me l'ont demandé, je vais donc le résumer ici aujourd'hui dans l'espoir que davantage de personnes sauront comment mettre fin en toute sécurité à un thread en cours d'exécution en Java.
Dans la programmation multithread Java, le type java.lang.Thread contient une série de méthodes start(), stop(), stop(Throwable) et suspend() , destroy() et curriculum vitae(). Grâce à ces méthodes, nous pouvons effectuer des opérations pratiques sur les threads, mais parmi ces méthodes, seule la méthode start() est conservée.
Les raisons de l'abandon de ces méthodes sont expliquées dans la documentation d'aide du JDK et dans un article de Sun "Pourquoi Thread.stop, Thread.suspend et Thread.resume sont-ils obsolètes ?"
Alors, comment devrions-nous arrêter le fil ?
Utiliser des variables partagées
De cette façon, la raison pour laquelle les variables partagées sont introduites est que la variable peut être utilisée par plusieurs threads effectuant la même tâche comme signal. s'il faut interrompre, notifier l'exécution du thread interrompu.
public class ThreadFlag extends Thread { public volatile boolean exit = false; public void run() { while (!exit); } public static void main(String[] args) throws Exception { ThreadFlag thread = new ThreadFlag(); thread.start(); sleep(3000); // 主线程延迟3秒 thread.exit = true; // 终止线程thread thread.join(); System.out.println("线程退出!"); } }
Un indicateur de sortie, exit, est défini dans le code ci-dessus. Lorsque exit est vrai, la boucle while se termine et la valeur par défaut de exit est fausse. Lors de la définition de exit, un mot-clé Java volatile est utilisé. Le but de ce mot-clé est de synchroniser exit, ce qui signifie qu'un seul thread peut modifier la valeur de exit en même temps.
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!