[英]How to cancel out reading input from console?
因此,我正在嘗試制作一個對用戶施加時間限制的控制台應用程序。 期望用戶輸入一定的數字,但是經過一定的毫秒數(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”,但程序不會終止。 似乎仍然期望用戶輸入。 我做錯了什么? 還是有更好的方法來做到這一點?
Timer不是守護程序線程,除非您調用timer.cancel()或以這種方式創建計時器,否則它不會自行終止:
new Timer(true).schedule(task, 10000);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.