方案:
我正在制作一款流行的纸牌游戏。需要有一段时间人们可以加入游戏。有时候,这段时间太短了。因此,我想让人们延长等待期。
对于示例数字,默认的“大厅时间”为45秒,每个分机为15秒。
问题:
我决定使用Java的计时器。当'lobby'开始时,TimerTask从现在起安排45秒:
UnoStartTimer.schedule(new UnoStartTask(), 45000);
当有人想延长延迟时,这是我想要运行的伪代码:
UnoStartTimer.reschedule(UnoStartTimer.getNextScheduledTime() + 15000);
快速查看the javadoc表示使用Timer类的这种简单解决方案不存在。
以下是我提出的可能性:
那么,它是哪一个?
答案 0 :(得分:0)
看看java.util.Timer。除其他外,我看到了cancel()方法。我还看到一个schedule()方法,它接受Date对象而不是毫秒。
您可以创建一个Date对象,该对象从现在起45秒,使用该时间计划计时器,如果发生扩展,请取消它,将15秒添加到原始Date对象并使用该新时间计划任务。 / p>
答案 1 :(得分:0)
根据Timer文档,在Java 1.5及更高版本中,您应该更喜欢ScheduledThreadPoolExecutor。 (您可能希望使用Executors.newSingleThreadScheduledExecutor()创建此执行程序以方便使用;它创建的东西很像Timer。)
请参阅这篇文章 - > Resettable Java Timer