优点:可以修改cron表达式。
缺点:如果执行周期由大变小,但只能等到下个周期生效。eg:任务由每天执行一次改为每小时执行一次,如果今天任务已经执行,会在明天的这个时间再执行一次,再此之后会每小时执行一次;如果今天没有执行,那么会在今天执行后,每小时执行一次。
@Slf4j
@EnableScheduling
@Configuration
public class CronTask implements SchedulingConfigurer {
@Autowired
YourService yourService;
public void run() {
// TODO your job
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
Trigger trigger = triggerContext -> {
//任务触发,可修改任务的执行周期.
//每一次任务触发,都会执行这里的方法一次,重新获取下一次的执行时间
String cron = "0 0/10 * * * ?";
CronTrigger trigger1 = new CronTrigger(cron);
Date nextExec = trigger1.nextExecutionTime(triggerContext);
log.info("任务下一次运行时间:{}", nextExec);
return nextExec;
};
Runnable task = () -> {
//任务逻辑代码部分.
run();
};
taskRegistrar.addTriggerTask(task, trigger);
}
网友评论