gpt4 book ai didi

java - 每个字符线程与每个 map 线程设计

转载 作者:行者123 更新时间:2023-12-03 23:15:09 24 4
gpt4 key购买 nike

我想了解有关 Java 中多线程设计的意见。在每个字符线程和每个 map /区域线程之间。哪个更有优势(或其他方式),游戏服务器可以处理 3000 多名玩家。

最佳答案

这些都不会给你很大的可扩展性。线程占用了相当多的空间——例如默认情况下,在 32 位系统上,堆栈大小为 256K,因此对于 3000 个用户,您将需要 750MB 来启动 3000 个线程,而且这是在他们为数据分配任何内存以执行实际工作之前。

每用户线程将对可用用户数量施加硬性限制,与服务器使用不同设计可能处理的数量相比,该数量可能人为偏低。每个区域的线程在这方面可能稍微好一些,但它也可能限制区域的数量。

大量线程具有显着的任务切换开销。为避免这种情况,我会尝试从设计中删除线程的“所有权”并改为使用工作池,例如 ExecutorService。 .游戏处理被分成工作单元,然后您将这些工作单元提交给池。池通常设置为允许与内核相同数量的线程,以便您获得最高效的执行。 (如果线程受 I/O 限制,您可以使用比内核更多的线程。)

关于java - 每个字符线程与每个 map 线程设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3274490/

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