我有一个要求,我需要安排一个只执行一次的任务(来自UI)。完成后,我应该能够再次(从UI)重新安排相同的任务。
我知道@Schedule不会在这里工作,因为我只需执行一次。因此,在进一步搜索之后,我能够使用具有Runnable和Date的TaskScheduler以及@Async来安排任务在特定时间执行一次。但是我无法重新安排。
看起来使用石英可能是可能的,但我还没有完成它。
是否可以使用Spring Trigger实现我的要求。我只能看到触发器接口CronTrigger和PeriodicTrigger的两个实现。
请建议任何可能的方法。 包括最初的一段代码会有所帮助。
答案 0 :(得分:0)
我看到的最简单的方法是在Spring bean中创建一个定期调度的“触发器”方法,该方法检查某个条件并仅在满足条件时执行“真实”操作(例如,您在UI中输入的时间)已经过去,工作尚未开始):
@Scheduled(fixedDelay = 5000)
public void trigger() {
if(condition){
//... do the action
}
}
这需要一些持久性来存储“作业元数据”,比如执行日期和作业的当前状态,但这似乎比使用线程或包含石英仅仅为这一个用例“更轻”。