我使用Spring ThreadPoolTaskScheduler来执行任务,我在run()
方法中安排相同的任务,如下所示。通过这样做,我确保在当前任务完成后安排下一个。
public class Task implements Runnable{
@Autowired
ThreadPoolTaskScheduler scheduler;
public void run() {
//some work
scheduler.schedule(this, new Date(System.currentTimeMillis() + delay));
}
}
这种方法是否安全,是否会出现并发问题?
答案 0 :(得分:2)
您应该使用ThreadPoolTaskScheduler.scheduleWithFixedDelay(...)
,而不是尝试手动配置下一次执行。它完全符合你的代码所做的,除了更好。