协议:TCP
我有一个服务器,其中SocketServer接受客户端并将套接字(由ss.accept()
返回)放入数组中。
我有一个线程需要在准备好读取套接字时通知(客户端发送数据)。 该线程会将请求分派给其他线程进行处理,因此这个初始线程所做的事情非常简单快捷。
有可能吗?
我真的想避免1个线程= 1个客户端,并且有1个线程处理N个客户端。
答案 0 :(得分:3)
我想你可能想看一下Java NIO的非阻塞IO方面,本文讨论了有关"Architecture of a Highly Scalable NIO-Based Server"的一些内容。 另外,我认为this question的答案对您有帮助。
通常非阻塞IO使用回调 - 当数据可用时,您的代码将需要注册处理程序以“回调”。在这种情况下,处理程序会将消息或数据发布到您的单个线程 - 这必须是线程安全的,以处理并发通知/回调。