/ / runnable内でのスケジューリング - java、spring、マルチスレッド、スケジュールされたタスク、スレッドプール

実行可能なスケジュール - Java、Spring、マルチスレッド、スケジュールされたタスク、スレッドプール

私はSpring ThreadPoolTask​​Schedulerを使ってタスクを実行していますが、同じタスクを内部でスケジュールしています。 run() 以下のような方法です。そうすることで、現在のタスクが完了した後に次のタスクがスケジュールされるようにします。

public class Task implements Runnable{
@Autowired
ThreadPoolTaskScheduler scheduler;
public void run() {
//some work
scheduler.schedule(this, new Date(System.currentTimeMillis() + delay));
}
}

このアプローチは安全ですか、並行性の問題はありますか?

回答:

回答№1は2

次の実行を手動で設定しようとする代わりに、あなたは使うべきです ThreadPoolTaskScheduler.scheduleWithFixedDelay(...)。それはあなたのコードがしていることと全く同じです。