gpt4 book ai didi

Java单线程多用户聊天程序

转载 作者:行者123 更新时间:2023-12-02 05:24:53 26 4
gpt4 key购买 nike

因此,我正在从事这个娱乐项目,以了解有关 java 网络的更多信息,到目前为止,我遇到的每个教程或文档都涉及为每个客户端连接创建一个新线程以等待输入。我想知道是否可以用单个线程处理客户端连接列表?我尝试执行类似以下代码的操作,但没有成功。

while(true){
for(Client c : list){
DataInputStream dis = new DataInputStream(c.getSocket().getInputStream());
if(dis.readLine()!=null){
//Code
}
dis.close();
}
}

最佳答案

是的,使用 NIO 包的单线程是可能的。这将允许您在单线程内设置非阻塞 IO 和跨 channel 多路复用。这并不完全是微不足道的,但有一个很好的例子 here .

上面的示例将阻塞 readLine() 调用,直到 Socket 上有数据可用。如果您的一个客户端正在等待数据,则 while 循环将永远不会继续,您将永远不会为其他客户端提供服务。

关于Java单线程多用户聊天程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26151174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com