Comment puis-je tuer un thread à partir d'un autre thread en Java?
Je suis appelant les deux threads d'un thread, le thread 1 et le fil 2. Lorsque le thread 1 s'arrête, je veux arrêter ou tuer le thread 2 aussi. Comment puis-je faire cela?Il y a un changement dans la production réelle de ce que je veux.C'est Il y a une classe principale qui est aussi le fil de discussion.À partir de la classe principale, je fais appel thread1 et thread2.Je donne une entrée de thread1 de classe principale, mais quand cette entrée est à se changer j'ai envie de tuer la course thread1 et commencer une fois de plus avec une autre entrée.Le deuxième thread,thread2 sera exécuté avec la sortie donnée par le thread1.Donc finalement, lorsque le premier thread est tué, le second va fonctionner, mais vous donnera une sortie seulement si t6here est une entrée pour ce thread.
OriginalL'auteur Raji | 2009-11-05
Vous devez vous connecter pour publier un commentaire.
Java a des méthodes obsolètes explicitement de tuer un autre thread (comme Thread.stop /Thread.détruire). La bonne façon est de s'assurer que les opérations sur l'autre thread ne peut être dit d'arrêter (par exemple, ils s'attendent à une InterruptedException, ce qui signifie que vous pouvez appeler Fil.interrupt() afin de l'arrêter).
Vous pourriez également être intéressé par le réglage de la deuxième fil à fil de démon, ce qui signifie que dans le cas de tous les autres threads dans la VM avez terminé la procédure de sortie.
OriginalL'auteur abyx
Voir ce Spécialiste de l'environnement Java article sur la façon d'arrêter les threads proprement.
Brièvement, l'article recommande
Thread.interrupt()
plus appropriéInterruptedException
de manutention dans le code de thread. C'est une discussion intéressante en elle-même, et quelque chose que j'ai rarement le faire correctement.OriginalL'auteur Brian Agnew
Selon ces instructions, il est préférable d'utiliser le drapeau variables de dire à l'autre thread pour arrêter son travail proprement.
OriginalL'auteur Erich Kitzmueller
Dans le
run()
méthode de votre fil, vérifier un attribut défini par une méthode d'accesseur commeshutdown()
lorsque vous souhaitez arrêter le fil, utilisez cette valeur à la fin de la boucle while. Par exemple:vous devez vous avez raté le Par exemple bit, ce code est évidemment seulement pour but de montrer la structure d'une solution à ne pas être utilisé comme il est.
Si vous affichez des exemples, de préférence faire d'eux de bons exemples. Si les gens savaient déjà de distinguer le bon du mauvais exemples, ils n'auraient pas à demander ici.
OriginalL'auteur rsp