簡體   English   中英

如何取消從控制台讀取輸入?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM