Поэтому я пытаюсь создать консольное приложение, которое накладывает ограничения на пользователя. Ожидается, что пользователь введет определенное число, но после определенного количества миллис (10 секунд) он выйдет из этого режима ввода и сообщит пользователю, что время истекло, и программа движется дальше. Это мой код:
final InputStreamReader isr = new InputStreamReader(System.in);
final BufferedReader br = new BufferedReader(isr);
TimerTask task = new TimerTask() {
@Override
public void run() {
try {
System.in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
};
new Timer().schedule(task, 10000);
try {
String line = br.readLine();
if (line == null) {
System.out.println("TIME EXPIRED");
} else {
System.out.println("TEXT: " + line);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("END");
Кажется, он работает правильно, за исключением того, что программа, похоже, застряла в режиме ввода на неопределенное время. Он выдает «END» на консоль, но программа не завершается. Кажется, он все еще ожидает ввода от пользователя. Что я сделал не так? Или есть лучший способ сделать это?