5分ごとにタスクを実行しようとしています。タスクは xx:00、xx:05、xx:10、xx:15 などから開始する必要があるため、時刻が xx:37 の場合、タスクは xx:40 に開始されます。
私はそれを行うために次のコードを使用しています:
Date d1 = new Date();
d1.setMinutes(d1.getMinutes() + 5 - d1.getMinutes()%5);
d1.setSeconds(0);
this.timer.schedule(new Send(), d1, TEN_MINUTES/2);
送信は次のようになります。
class Send extends TimerTask
{
public void run()
{
if(SomeCondition)
{
Timestamp ts1 = new Timestamp(new java.util.Date().getTime());
SendToDB(ts1);
}
}
}
したがって、結果は、分を % すると、結果が 0 になるという記録になるはずです。しかし、私が持っている記録時間は次のとおりです。
*05:35:00 *07:44:40 *07:54:40 *09:05:31 *09:50:00
ご覧のとおり、最初のタスクは完全に開始されましたが、その後何か問題が発生しました。
私の推測では、タスクは前のタスクが終了してから 5 分間のジャンプを計算するため、タスクの実行時間が影響しますが、それは単なる推測です。