在java中处理大量单独定时任务的最佳方法?

时间:2016-08-25 15:05:46

标签: java

我正在开发一个用java作为后端的小型多人浏览器游戏。玩家可以创建自己的游戏室,并让其他玩家加入。

每个游戏室都需要执行某种计划任务,我不确定什么是最好的方法,以保持游戏顺利运行。

没有太多细节的概念是,当一个新的回合在游戏室开始时,列表中的下一个玩家将输入一个问题,然后其他玩家在新一轮开始之前有30秒的时间回答问题。

所以我的问题是我不知道应该做些什么才能有单独的任务,例如检查询问问题的玩家是否不活动(如果没有在15中键入问题则应该跳过)几秒钟左右),30秒后开始新一轮等等。

我最初会为每个游戏室创建一个单独的线程,但意识到这可能不是很聪明。另一个想法是每秒运行一个主游戏循环并检查所有游戏室并以这种方式执行任务,但我认为如果创建了太多游戏室,最终将无法循环。

如上所述在多个游戏室中处理定时事件的最佳方法是什么,而不会遇到性能问题?

修改

最好是为所有游戏室设置1个循环,还是每个游戏室都有一个带有自己循环的线程?

1 个答案:

答案 0 :(得分:0)

如果你的游戏循环只检查不活动,它可能会处理数百万个房间。

否则我认为你应该看看Tasks and ExecuterServices。 Java有很好的方法可以将各个任务均匀地分配到CPU-Cores上。

在单个SO帖子中教授所有并发功能是不可能的。你需要自己学习