シナリオ:
人気のあるカードゲームのクローンを作成しています。人々がゲームに参加できる期間が必要です。時々、期間が短すぎます。ですから、待ち時間を長くしてもらいたいです。例の番号の場合、デフォルトの「ロビー時間」は45秒で、各延長は15秒です。
問題:
Javaのタイマーを使用することにしました。'lobby'が開始すると、TimerTaskは今から45秒後にスケジュールされます。
UnoStartTimer.schedule(new UnoStartTask(), 45000);
誰かが遅延を延長したいとき、これは私が実行したい擬似コードです:
UnoStartTimer.reschedule(UnoStartTimer.getNextScheduledTime() + 15000);
javadocをざっと見てみると、Timerクラスを使用したこのような簡単なソリューションは存在しないことがわかります。
これが私が思いついた可能性です:
- 別のスケジューリングクラスを使用する必要があります(別の質問への回答でScheduledExecutorServiceと呼ばれるものを見たと思いますが、すぐには問題の解決策ではなかったようです)
- タイマーでこれを行う方法があります、そして私はそれを露骨に見落としています
- これを行う簡単な方法はありません
それで、それはどれですか?