java - Java 服务器中每个游戏室的线程?

标签 java multithreading networking server multiplayer

我正在开发一款多人游戏,它有一个大厅,人们可以在那里加入不同的游戏。

我很好奇是否应该为每个游戏室启动一个线程。

我正在使用 java.io,因此我已经为每个玩家提供了一个线程。

即使每个线程上的负载不重,线程过多也会减慢我的服务器速度吗?

如果我托管一个可容纳 100 名玩家和 30 个房间的服务器,平均虚拟服务器可以同时处理 150 个线程吗?或者说会影响游戏性?

这是一个实时游戏,我需要为每个位置更新提供即时消息传送 (UDP)?

最佳答案

线程(如您所知)只是允许同时运行任务。拥有大量线程并不总是有助于或不利于服务器速度,这受到其他因素的限制,例如互联网速度或计算机的处理能力。另一边的人的游戏运行速度将与计算机处理所有请求的速度一样快,即使您有 10000 个线程,它们也都需要处理能力和通过互联网的连接。

简而言之,服务器和客户端的速度将受到使用您服务器的其他人的影响,速度将受到您的互联网连接速度和/或 CPU 功率的限制。

如果这没有回答您的问题,请更清楚地定义实际问题,而不是问很多一般性问题。

编辑: 阅读您的评论后,我的建议是:做您认为对服务器最有利的事情。拥有大量线程不会对您的服务器产生好或坏的影响。 :)

关于java - Java 服务器中每个游戏室的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47382424/

相关文章:

java - 如何在java中将6.23增加到6.25

c# - 当我们创建并启动一个新的 .NET 线程时,它会创建一个新的操作系统级线程吗?

java - 交易ID创建

java - Jackson 流发送不完整的 JSON 对象

java - J组合框。从MYSQL填充数据

java - 我可以使用 Terracotta 来扩展 RAM 密集型应用程序吗?

c# System.Threading.Timer 等待处理

java - 关键高效的服务器

optimization - 针对低带宽进行优化

linux - 互斥解锁和 request_module() 行为