私はSpring ThreadPoolTaskSchedulerを使用してタスクを実行していますが、私はrun()
メソッド内で以下のように同じタスクをスケジューリングしています。そうすることによって、私は現在のタスクが完了した後に次のスケジュールが設定されていることを確認しています。実行可能ファイル内でのスケジュール
public class Task implements Runnable{
@Autowired
ThreadPoolTaskScheduler scheduler;
public void run() {
//some work
scheduler.schedule(this, new Date(System.currentTimeMillis() + delay));
}
}
このアプローチは安全ですか?並行性の問題はありますか?
'Task'オブジェクトのインスタンスに内部状態があるかどうかは、' ThreadPoolTaskScheduler'によって複数のスレッドが生成されるという仮定の下でそれらの実行が重複して同時に破損する可能性があるかどうかによって異なります(つまり、シングルスレッドプールとして構成されていません)。 –