提问人:jakeprogrammer 提问时间:5/11/2013 最后编辑:Andrew Thompsonjakeprogrammer 更新时间:5/11/2013 访问量:886
在从扫描仪获取用户输入的同时打印到控制台
Print to console while getting user input from Scanner
问:
我正在编写一个服务器程序,该程序需要将信息(例如客户端连接或断开连接)打印到控制台,同时通过类请求用户输入。用户输入将是一个命令,例如“quit”。java.util.Scanner
有没有办法在打印信息的同时等待用户输入?如果我不能做到这一点,还有其他选择吗?System.out.println()
Scanner
System.out.println()
答:
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 只处理接受连接并将其传递给 调用 的方法。这意味着服务器可以继续等待新连接,并在其分配的 .Thread
handlerExecutor
run
Handler
Handler
评论