-1

毎回の操作後、スレッドを1時間スリープさせることを考えています。一種のwhileループ実行。

4

2 に答える 2

1

特定の間隔でタスクを実行する場合は、java.util.Timerクラスを使用して、定期的にjava.util.TimerTaskをscheduleAtFixedRateする必要があります。

タスクの終了後にスレッドを1時間スリープさせると、間隔は実際には1時間に実行時間を加えたものになり、正確には1時間ではありません。バッチタスクに数秒しかかからない場合でも、時間差は時間の経過とともに蓄積されます。

つまり、タスクが実行される実際の時間は、時間の経過とともに予測が難しくなります。バッチプロセスが予測可能な瞬間に発生することや、週に正確に168回実行されることがユースケースにとってどれほど重要かはわかりませんが、重要な場合、スリープを使用したソリューションは非常に悪いものになります。

于 2013-03-18T10:31:07.343 に答える
1

ScheduledExecutorService.scheduleAtFixedRateを使用する簡単な方法

于 2013-03-18T10:34:49.077 に答える