簡體   English   中英

從Scanner獲取用戶輸入時打印到控制台

[英]Print to console while getting user input from Scanner

我正在編寫一個服務器程序,需要在通過java.util.Scanner類請求用戶輸入時將信息(例如客戶端連接或斷開連接)打印到控制台。 用戶輸入將是諸如“退出”之類的命令。

有沒有辦法在使用System.out.println()打印信息時等待用戶輸入? 如果我不能用ScannerSystem.out.println()做到這一點有另一種選擇嗎?

您需要將處理與接受新連接分開。

這是一個微不足道(並且有點人為)的例子

private static final class Handler implements Runnable {

    private final Socket socket;

    public Handler(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        //do stuff.
    }
}

public static void main(String[] args) throws IOException {
    final ServerSocket serverSocket = new ServerSocket();
    final ExecutorService handlerExecutor = Executors.newFixedThreadPool(4);
    while (true) {
        final Socket socket = serverSocket.accept();
        System.out.println("Got new connection, passing off to handler");
        handlerExecutor.execute(new Handler(socket));
    }

}

所以主Thread只處理接受連接並將其傳遞給handlerExecutor ,后者調用Handlerrun方法。 這意味着服務器可以繼續等待新連接並在其分配的Handler中的各個連接中繼續工作時記錄它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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