バックグラウンドで継続的に実行されるJavaサービスを作成しています。サービスの仕事は、特定の日付にテーブルのコピーを作成することです。正確には、いくつかのテーブルからデータを読み取り、テーブルの record_date が現在の日付と一致する場合は、テーブルのコピーを作成する必要があります。その後、サービスは次の実行日までスリープする必要があります。次回の実行日も、テーブル内のレコードを参照して決定されます。
現在、これを行う方法は、while(true) ループで実行されるスレッドを作成することです。スレッドがタスクの実行、つまりテーブルコピーの作成を終了したら、次に実行する必要があるまで Thread.sleep() を使用してスレッドをスリープ状態にします。スレッドがスリープ状態になるまでのミリ秒数。現在の日付 (スレッドによってタスクが実行された日付) と次の実行日の差をとって計算します。
これは正しいアプローチですか?この特定のシナリオで thread.sleep() を使用するのは正しいですか? これは、スレッドの次の実行日が 3 か月後または 1 年後になる可能性があるためです。また、ここでよくわからない場合はお知らせください。