所以我正在为我正在制作的游戏制作一个 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 个线程并且没有延迟。所以对于我认为的每个球员。
如果您询问在系统关闭之前可以创建多少个线程,它可能是几千个线程,这取决于您的操作系统和每个线程需要多少内存。
我们无法为您做出这种设计选择,因为我们不知道每个线程的作用,但如果为每个游戏使用一个线程很重要,并且优化是否对您的目的很重要(系统所需的可扩展性?商业还是家庭作业?) ,我会尽可能少地使用线程。