einen laufenden Thread in Java zu töten?

8

Wie man einen laufenden Thread in Java killt

    
JavaUser 28.06.2010, 07:30
quelle

3 Antworten

12

Sie können den Thread bitten, ihn zu unterbrechen, indem Sie Thread.interrupt()

Beachten Sie, dass einige andere Methoden mit ähnlicher Semantik existieren - stop() und destroy() - aber sie sind veraltet , weil sie unsicher . Sei nicht versucht, sie zu benutzen.

    
Bozho 28.06.2010, 07:31
quelle
6

Wie Bozho sagte, ist Thread.interrupt () der generische und richtige Weg, dies zu tun. Aber denken Sie daran, dass der Thread dazu benötigt, zusammenzuarbeiten. Es ist sehr einfach, einen Thread zu implementieren, der Unterbrechungsanforderungen ignoriert.

Damit ein Codeabschnitt auf diese Weise unterbrechbar ist, sollte er keine InterruptedException ignorieren und das Unterbrechungsflag bei jeder Schleifeniteration überprüfen (mit Thread.currentThread (). isInterrupted ()). Außerdem sollte es keine nicht unterbrechbaren Blockierungsoperationen haben. Wenn solche Operationen existieren (z. B. Warten auf einen Socket), dann benötigen Sie eine spezifischere Unterbrechungsimplementierung (z. B. Schließen des Sockets).

    
Eyal Schneider 28.06.2010 07:50
quelle
2

In Kürze benötigen Sie Thread.interrupt()

Weitere Details finden Sie in diesem Artikel im Abschnitt How do I stop a thread that waits for long periods (e.g., for input) Warum sind%? co_de%, Thread.stop , Thread.suspend und Thread.resume Veraltet? .

    
Incognito 28.06.2010 07:38
quelle

Tags und Links