spring task动态改变cron

# 加注解 才会启动定时器
@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;
    }
}
发布了532 篇原创文章 · 获赞 46 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/kq1983/article/details/105413107