# 加注解 才会启动定时器
@EnableScheduling
# 通过改变cron,会动态调整执行频率
@Component
public class ChangeCronTask implements SchedulingConfigurer {
protected static Logger logger = LoggerFactory.getLogger(ChangeCronTask.class);
/** 默认每隔5s */
private String cron = "0/5 * * * * *";
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
// Runnable
Runnable task = () -> logger.info("{}, ChangeCronTask print", DateUtil.getFormat());
/**
* 调度实现的时间控制 nextExecutionTime
*/
Trigger trigger = (triggerContext) -> {
CronTrigger cronTrigger=new CronTrigger(cron);
return cronTrigger.nextExecutionTime(triggerContext);
};
scheduledTaskRegistrar.addTriggerTask(task, trigger);
}
public void setCron(String cron) {
this.cron = cron;
}
}