所以我正在为我正在制作的游戏制作一个 Java 服务器,我想知道为每个玩家创建一个线程是否是一种矫枉过正的事情,考虑到服务器可能会同时让很多人在线。
多少线程是多少?,我应该每场比赛制作1个线程(它是大厅类型的游戏,您选择一场比赛并进入)还是每个玩家1个线程好?
所以我正在为我正在制作的游戏制作一个 Java 服务器,我想知道为每个玩家创建一个线程是否是一种矫枉过正的事情,考虑到服务器可能会同时让很多人在线。
多少线程是多少?,我应该每场比赛制作1个线程(它是大厅类型的游戏,您选择一场比赛并进入)还是每个玩家1个线程好?
这完全取决于您的应用程序架构。在得出结论之前,我们需要了解几件事。
所以最好有 ThreadPool 并且线程池应该有固定的线程数。喜欢 Executors.newFixedThreadPool(NO_OF_THREADS);
同时,我们的武器库中应该有一个拒绝政策,其中一些是例如Silent discard, discard with an exception, caller runner (back push so that it will slowdown request inflow the way normal networks work) and discard old (depends on your priority set)
。
上述两件事都会为您提供一个强大的系统。抱歉,如果您觉得我无法正确回答您的问题。
编辑:我根据以下查询回答。
no of threads = 2 * no_of_cores * no_of_disks * percentage CPU utilization you need * (1 + (W/ C))
(W/C) 是表示等待时间到计算时间的分数。
我在我的游戏中为每个玩家创建线程,同时有 20-30 个线程并且没有延迟。所以对于我认为的每个球员。
如果您询问在系统关闭之前可以创建多少个线程,它可能是几千个线程,这取决于您的操作系统和每个线程需要多少内存。
我们无法为您做出这种设计选择,因为我们不知道每个线程的作用,但如果为每个游戏使用一个线程很重要,并且优化是否对您的目的很重要(系统所需的可扩展性?商业还是家庭作业?) ,我会尽可能少地使用线程。