Wie kann ich einen Thread aus einem anderen Thread in Java entfernen?

8

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.

    
Raji 05.11.2009, 13:19
quelle

4 Antworten

13

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.

    
abyx 05.11.2009 13:25
quelle
6

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.

    
Brian Agnew 05.11.2009 13:29
quelle
2

Nach diesen Anweisungen ist es am besten, Flag-Variablen zu verwenden dem anderen Thread zu sagen, dass er seine Arbeit sauber beenden soll.

    
Erich Kitzmueller 05.11.2009 13:29
quelle
1

Überprüfen Sie in der Methode run() Ihres Threads ein Attribut, das über eine Zugriffsmethode wie shutdown() festgelegt wird, wenn Sie den Thread stoppen möchten. Verwenden Sie diesen Wert, um die while-Schleife zu beenden. Zum Beispiel:

%Vor%     
rsp 05.11.2009 13:31
quelle

Tags und Links