基于接口实现定时任务

@Component
@EnableScheduling
public class MyTask implements SchedulingConfigurer {

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addTriggerTask(() -> process(),
                triggerContext -> {
                    String cron = "";
                    if((int)(Math.random()*100)%2 == 1){
                        cron = "*/2 * * * * ?";
                        System.out.println("每1秒钟执行一次");
                    }else {
                        cron = "*/8 * * * * ?";
                        System.out.println("每8秒钟执行一次");
                    }
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                });
    }

    private void process() {
        System.out.println(DateExtendUtil.parseDateToStr(new Date(),DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS)+ "    基于接口定时任务");
    }

}

可以将cron表达式放在数据库配置、redis或者其他地方,不需要重启服务。

基于接口实现定时任务_第1张图片
基于接口实现定时任务_第2张图片

参考文章:https://blog.csdn.net/qianlixiaomage/article/details/106599951

你可能感兴趣的:(spring,java,spring)