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ß".
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.
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.
Tags und Links java multithreading interrupt