アプリケーションが最初に実行された時期や実行時間に関係なく、毎日午後 3 時にメソッドを実行する効果的な方法を探しています。
これは、OS の介入なしでアプリケーションから完全に実行する必要があります (例: Windows タスク スケジューラ)。
さまざまな構成で java.util.Timer を試してみましたが、成功しませんでした。
どんな助けでも大歓迎です。
ありがとう。
アプリケーションが最初に実行された時期や実行時間に関係なく、毎日午後 3 時にメソッドを実行する効果的な方法を探しています。
これは、OS の介入なしでアプリケーションから完全に実行する必要があります (例: Windows タスク スケジューラ)。
さまざまな構成で java.util.Timer を試してみましたが、成功しませんでした。
どんな助けでも大歓迎です。
ありがとう。
Java ベースのジョブ スケジューリング システムであるQuartzを見てください。
おそらく、失敗したタスクを実行したり ( ahemクラッシュ時など)、スレッドを管理する手間を 省いたりすることができるクォーツ エンジンのようなものを使用することをお勧めします。
たとえば、スレッドを使用してスリープ状態にし、86400 秒 (1 日) 後にウェイクアップすると、1 時間遅れて (1 日 = 82800 秒)、または 1 時間早く (1 日 = 90000 秒) 起きて、DST が日ごとに変化するため、どのようなソリューションを選択するかに注意してください
組み込みのJDKの方法は、他の人が提案したことを実行し、最初に計算することです:
次に、スケジュール エグゼキュータのようなものを使用してタスクを送信し、特定の遅延で実行できます。これは、 Quartzなどのフレームワークで使用できるオプションよりもはるかに単純ですが 、外部依存関係は必要ありません。
また、使用している JDK を常にリストする必要があります。これにより、使用しているバージョンの JDK に対するソリューションを人々が提供できるようになります。
他の人が述べたように、Quartz は選択肢であり、それを使用すると、cron のような操作、ジョブ、またはトリガーを実行できます。この件に関するリンクは次のとおりです。 /index.html
次の午後 3 時までの差を計算し、その時間の間スリープするスレッドを開始できます。ウェイクアップすると、メソッドが実行され、再計算されてスリープします。これはあなたが意味したものですか?