gpt4 book ai didi

Java 套接字 : can I write a TCP server with one thread?

转载 作者:搜寻专家 更新时间:2023-10-31 20:16:16 25 4
gpt4 key购买 nike

根据我读到的有关 Java NIO 和非阻塞 [Server]SocketChannels 的内容,应该可以编写一个 TCP 服务器,它只使用一个线程维持多个连接——我会制作一个等待所有相关 channel 的选择器服务器的循环。

是这样吗,还是我遗漏了一些重要的细节?我会遇到什么问题?

(背景:TCP 通信适用于小型多人游戏,因此最多同时连接 10-20 个。大约每隔几秒发送一次消息。)

最佳答案

是的,你是对的。您可能遇到的问题是处理时间过长。在这种情况下,您必须将处理包装在另一个线程中,这样它就不会干扰网络线程,并防止明显的延迟。

另一个细节; channel 都是关于“移动”数据的。如果您要发送的数据已准备就绪,那么您可以将此数据移动到网络 channel 。复制/缓冲/等。都是NIO实现的,那么。
你的单线程“网络线程”只是控制连接,而不是限制它(阅读:与汽车的奇怪类比)。

基本的多线程方法比单线程 NIO 更容易设计和实现。在小型多人游戏服务器/客户端中,性能提升并不明显,尤其是如果消息仅每隔几秒发送一次。

关于Java 套接字 : can I write a TCP server with one thread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2443098/

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