У меня есть поток Java:
class MyThread extends Thread {
@Override
public void run() {
BufferedReader stdin =
new BufferedReader(new InputStreamReader(System.in));
String msg;
try {
while ((msg = stdin.readLine()) != null) {
System.out.println("Got: " + msg);
}
System.out.println("Aborted.");
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
В другом потоке, как мне отменить вызов stdin.readline()
в этом потоке, чтобы этот поток печатал Aborted.
? Я пробовал System.in.close()
, но это не имеет никакого значения, stdin.readline()
по-прежнему блокируется.
Меня интересуют решения без
- ожидание ожидания (потому что это сжигает 100% процессор);
- sleep (потому что тогда программа не отвечает мгновенно на
System.in
).