【发布时间】:2013-05-17 11:07:03
【问题描述】:
我正在制作一个 Java 多人回合制游戏,我想限制每个玩家移动的时间,游戏由游戏会话或房间组成,每个房间有 4 名玩家。 游戏有大约 40 个游戏环节,每个环节至少有 160 个回合。
首先我查看了java.util.Timer,然后我发现ScheduledExecutorService 看起来好多了,我可以为每个游戏会话创建一个SingleThreadScheduledExecutor,每回合创建一个新的可运行对象,如果玩家是在 runnable 执行之前移动我可以调用 ScheduledFuture.cancel() 方法。
理论上看起来不错,但我有些担心,所以我想知道:
这是正确的方法吗?还是有更好的选择?
我可以只为所有游戏会话设置一个
ScheduledThreadPool每个游戏会话一个SingleThreadScheduledExecutor?我注意到取消
ScheduledFuture会将其保留在 记忆直到他的执行时间,这可能是一个问题 内存使用情况?最后,是否可以重用相同的可运行文件(每个游戏 1 个 会话)而不是每回合创建一个新会话。
【问题讨论】:
标签: java sockets timer multiplayer