Java-为多个客户端制作聊天服务器-我需要多少线程?
所以我得到了一个学校的练习,我要用java制作一个聊天服务器。我已经用TCP做了,但我也可以用UDP做 我开始做一些线程实现,但现在我真的不确定应该如何实现它,以及要生成多少线程。 所以,这是我的方法: 服务器需要1个线程运行,1个线程接收消息,1个线程发送消息。此外,我为每个连接的客户端创建了一个线程,服务器将其放入ClientThread[],然后用于向每个客户端发送消息。总共有13个线程(最多10个客户端) 此外,我想每个本地客户机都需要一个本地线程来发送和接收消息 这是正确的方法吗?让服务器运行13个线程会有问题吗Java-为多个客户端制作聊天服务器-我需要多少线程?,java,multithreading,tcp,server,chat,Java,Multithreading,Tcp,Server,Chat,所以我得到了一个学校的练习,我要用java制作一个聊天服务器。我已经用TCP做了,但我也可以用UDP做 我开始做一些线程实现,但现在我真的不确定应该如何实现它,以及要生成多少线程。 所以,这是我的方法: 服务器需要1个线程运行,1个线程接收消息,1个线程发送消息。此外,我为每个连接的客户端创建了一个线程,服务器将其放入ClientThread[],然后用于向每个客户端发送消息。总共有13个线程(最多10个客户端) 此外,我想每个本地客户机都需要一个本地线程来发送和接收消息 这是正确的方法吗?让服
提前谢谢 您的方法看起来很可靠,但您并不是真的想处理这么多客户端线程。你应该使用
在内存中存储已初始化线程的列表,只在启动时打开它们,在关闭时关闭它们。每当客户机/服务器需要发送消息时,您将使用一个线程,然后将其返回到池中(而不是关闭它)。你也可以配置一个按需增长的人才库我投票决定以“基于意见”的方式关闭它,但你的方法似乎很好。谢谢:)我现在正在研究一下,这似乎是一个非常好的选择不知道你在说什么,但在服务器进程中为每个客户机设置一个线程的意义在于,每个线程都等待来自其客户机的传入消息。在客户端关闭连接之前,无法将其返回到池中。另一种选择是使用
java.nio.channels.Selector
等待来自任何客户端的传入消息,并通过将任务分配给池线程来处理每条消息。这将比每客户端线程体系结构更具可扩展性,但可能更难实现/理解。正确,但这只是个家庭作业。仅仅通过建议线程池,我就过度解决了这个问题,幸运的是Java已经将它们开箱即用。如果问题是针对C语言,我就不会提出这个问题