Wie kann Warten auf Interrupt in Java reagieren?

9

Thread.interrupt unterbricht Aufrufe wie sleep , join und wait . Ich frage mich, wie es genau umgesetzt wird.

Ich weiß Thread.interrupt setzt ein Flag isInterrupted . Liest wait nur dieses Flag? Ich hoffe es nicht. Meine Frage ist also, wie wait über Interrupt "weiß".

    
Michael 15.04.2013, 07:35
quelle

3 Antworten

2

wait() fragt nicht ab. interrupt() überprüft den Zustand des unterbrochenen Threads. Wenn es läuft, setzt es nur die Flagge. Wenn es sich in wait() , sleep() oder join() befindet, wird der unterbrechende Thread auch in den Prozessor eingereiht. Wenn der unterbrochene Thread die Ausführung fortsetzt, überprüft er zuerst das Flag und löst InterruptedException aus, wenn das Flag aktiviert war.

    
Alexei Kaigorodov 15.04.2013, 08:54
quelle
1

Warten Sie und arbeiten Sie anders als Schlaf, warte / beitreten überprüft nicht unterbrochene Flagge. Wenn Sie einen Thread unterbrochen haben, der später sleep () aufruft, wird er unterbrochen, aber wenn er wait () oder join () aufruft, passiert nichts.

    
Evgeniy Dorofeev 15.04.2013 07:52
quelle
0

Dies ist ein Problem des Betriebssystems, da das System den Thread nicht JVM behandelt. Jedes Betriebssystem beschäftigt sich mit Threads auf unterschiedliche Art und Weise

    
aymankoo 15.04.2013 07:41
quelle

Tags und Links