1
Für den folgenden Code Gewinde Einstellen,Interrupt-Flag auf einem
static class SleeperThread extends Thread {
public void run() {
int c;
try {
c = System.in.read();
}
...
}
}
Wie in diesen bug erwähnt, wenn ein Thread auf IO (System.in.read();
) blockiert ist, kann dann nicht der Interrupt-Flag zu setzen, dass Thread, von einem anderen Thread?
Ja, es kann. Die Sache ist, dass '' read() 'nicht auf Thread-Unterbrechung prüft. –
@AndyTurner So ist das Interrupt-Flag gesetzt, aber da Java-Thread-Interrupts im Gegensatz zu Hardware-Interrupts synchron sind, müssen wir warten, bis 'read()' abgeschlossen ist. – overexchange
Java-Thread Interrupts sind * kooperativ * in der Natur: der Thread muss explizit auf Unterbrechung prüfen, es passiert nicht nur "passieren". –