【发布时间】:2018-08-23 20:53:47
【问题描述】:
我正在开发一个应用程序,它应该非常轻量级并且使用最少的线程数。
我的应用程序中需要一个套接字服务器来监控心跳。
ServerSocket listener= new ServerSocket(port);
while (true) {
Socket socket = listener.accept();
Runnable thread = new HBClient(this, socket);
thread.run();
}
这里的问题是我必须为每个客户端使用一个线程。
有没有办法在不使用线程的情况下做到这一点?也许是一种事件驱动的方法来识别客户端何时连接,或者是一种非阻塞方法来接受客户端。(我已经检查了 java.nio,但似乎没有线程就不能使用)
【问题讨论】:
-
你怎么认为没有(额外的)线程就不能使用 NIO?
-
按照我的理解,我必须有一个无限循环来等待新客户,就像上面的例子一样。
-
连接新客户端,读取数据,写入数据。是的,什么都做。不涉及等待,这将使其阻塞 IO。