@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或者其他地方,不需要重启服务。
参考文章:https://blog.csdn.net/qianlixiaomage/article/details/106599951