Java: как прервать чтение потока из System.in

У меня есть поток 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 () в этом потоке, чтобы этот поток печатал Прервано. ? Я пробовал System.in.close () , но это не имеет никакого значения, stdin.readline () все еще блокируется.

Меня интересуют решения без

  • занятого ожидания (потому что это сжигает 100% ЦП),
  • спящего режима (потому что тогда программа не отвечает мгновенно на System.in ).
14
задан pts 16 May 2011 в 11:50
поделиться