在从扫描仪获取用户输入的同时打印到控制台

Print to console while getting user input from Scanner

提问人:jakeprogrammer 提问时间:5/11/2013 最后编辑:Andrew Thompsonjakeprogrammer 更新时间:5/11/2013 访问量:886

问:

我正在编写一个服务器程序,该程序需要将信息(例如客户端连接或断开连接)打印到控制台,同时通过类请求用户输入。用户输入将是一个命令,例如“quit”。java.util.Scanner

有没有办法在打印信息的同时等待用户输入?如果我不能做到这一点,还有其他选择吗?System.out.println()ScannerSystem.out.println()

Java IO 控制台 java.util.scanner

评论


答:

0赞 Boris the Spider 5/11/2013 #1

您需要将处理与接受新连接分开。

这是一个微不足道(有点做作)的例子

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));
    }

}

因此,main 只处理接受连接并将其传递给 调用 的方法。这意味着服务器可以继续等待新连接,并在其分配的 .ThreadhandlerExecutorrunHandlerHandler