2017-10-01 3 views
0

Ich erstelle einen Thread für diese Klasse von der Hauptfunktion, aber auch nach der Unterbrechung mit Thread.currentThread(). Interrupt() Ausgabe enthält immer noch die Zeile Still Here.Java Thread aktiv nach Unterbrechung

Ich bin neu in Java Und ich möchte irgendwelche Vorschläge verbessern?

+0

Der Begriff 'Interrupt' ist in Java überladen, um 'nicht wirklich ein Interrupt' zu bedeuten. –

+0

Können Sie ausarbeiten? – sudojdoe

Antwort

2

Es gibt keine legal Möglichkeit, Thread-Ausführung in Java sofort zu stoppen. Wenn Thread#interrupt() aufgerufen wird, wird der interrupted-Flag im Thread auf true gesetzt. Es liegt in Ihrer Verantwortung als Programmierer, in Ihrem Code nach interrupted Flag zu suchen und Thread-Aktivitäten ordnungsgemäß zu beenden.

In Ihrem Beispiel können Sie einfach eine return Anweisung schreiben, die die Ausführung der run() Methode beendet.

Mehr Informationen erhalten Sie auf so etwas wie nächsten Beitrag: https://www.javaworld.com/article/2077138/java-concurrency/introduction-to-java-threads.html

0

Wie vorgeschlagen, return wird beendet nur die Ausführung von run(). Wenn Sie zuerst überprüfen möchten, ob der Thread unterbrochen wurde (durch einen anderen Thread), können Sie Folgendes tun:

if (Thread.currentThread().isInterrupted()) { 
    return; 
    }