场景:
我正在复制一款流行的纸牌游戏。需要有一段时间人们可以加入游戏。有时,周期太短。因此,我想让人们延长等待期。对于示例号码,默认的“大厅时间”为 45 秒,每个分机为 15 秒。
问题:
我决定使用 Java 的计时器。当“大厅”开始时,一个 TimerTask 计划在 45 秒后执行:
UnoStartTimer.schedule(new UnoStartTask(), 45000);
当有人想延长延迟时,这是我要运行的伪代码:
UnoStartTimer.reschedule(UnoStartTimer.getNextScheduledTime() + 15000);
快速浏览一下javadoc表明不存在这样一个使用 Timer 类的简单解决方案。
这是我想出的可能性:
- 我应该使用不同的调度类(我想我在另一个问题的答案中看到了一个叫做 ScheduledExecutorService 的东西,但它并没有立即看起来像是我的问题的解决方案)
- 有一种方法可以用 Timer 做到这一点,我公然忽略了它
- 没有简单的方法可以做到这一点
那么是哪一个呢?