我正在制作一个 Java 多人回合制游戏,我想限制每个玩家必须移动的时间,游戏由游戏会话或房间组成,每个房间有 4 名玩家。游戏有大约 40 个游戏环节,每个环节至少有 160 个回合。
首先我查看了java.util.Timer
,然后我发现ScheduledExecutorService
似乎更好,我可以SingleThreadScheduledExecutor
为每个游戏会话创建一个新的可运行对象,如果玩家在可运行对象执行之前移动,我可以调用该ScheduledFuture.cancel()
方法。
理论上它看起来不错,但我有一些担忧,所以我想知道:
这是正确的方法吗?还是有更好的选择?
我可以只
ScheduledThreadPool
为所有游戏会话而不是SingleThreadScheduledExecutor
每个游戏会话一个吗?我注意到取消 a
ScheduledFuture
会将它保留在内存中,直到他的执行时间,这可能是内存使用的问题吗?最后,是否可以重复使用相同的可运行文件(每个游戏会话 1 个)而不是每回合创建一个新的。