Ich rufe zwei Threads von einem Haupt-Thread auf, nenne sie Thread 1 und Thread 2. Wenn Thread 1 stoppt, möchte ich auch Thread 2 stoppen oder beenden. Wie kann ich das tun? Es gibt eine Änderung in der tatsächlichen Ausgabe, was ich will.That Es gibt eine Hauptklasse, die auch thread.From Haupt Klasse bin ich thread1 und thread2 aufrufen. Ich gebe eine Eingabe zu thread1 von der Hauptklasse aber Wenn diese Eingabe geändert wird, möchte ich den laufenden Thread1 beenden und ihn erneut mit einer anderen Eingabe starten. Der zweite Thread, thread2, wird mit der Ausgabe von thread1 ausgeführt. Wenn der erste Thread beendet wird, wird der zweite Thread ausgeführt aber gibt nur dann eine Ausgabe, wenn t6hier eine Eingabe für diesen Thread ist.
Java hat Methoden zum expliziten Töten eines anderen Threads (wie Thread.stop / Thread.destroy) veraltet. Der richtige Weg besteht darin, sicherzustellen, dass die Operationen des anderen Threads damit umgehen können, dass sie angehalten werden (zum Beispiel erwarten sie eine InterruptedException, was bedeutet, dass Sie Thread.interrupt () aufrufen können, um sie zu stoppen).
Sie könnten auch daran interessiert sein, den zweiten Thread als Daemon-Thread , was bedeutet, dass der Prozess beendet wird, falls alle anderen Threads in der VM beendet sind.
In diesem Java-Fachartikel erfahren Sie, wie Sie Threads sauber herunterfahren können.
Kurz gesagt, der Artikel empfiehlt Thread.interrupt()
plus die entsprechende InterruptedException
Behandlung im Thread-Code. Das ist eine interessante Diskussion an sich und etwas, was ich selten richtig sehe.
Nach diesen Anweisungen ist es am besten, Flag-Variablen zu verwenden dem anderen Thread zu sagen, dass er seine Arbeit sauber beenden soll.
Tags und Links java multithreading