Springboot实现定时任务安排重复执行操

  介绍

这期内容当中小编将会给大家带来有关Springboot实现定时任务安排重复执行操,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

@ component   公开课TestJob {   0/2 @Scheduled (cron=? * * * *“)   公共空白测试(){   System.out.println(“测试开始“);   System.out.println(“测试结束“);   }   }

上述任务在启动之后一直执行。

然后我在任务后面加入线程睡眠1分钟。

@ component   公开课TestJob {   0/2 @Scheduled (cron=? * * * *“)   公共空白测试(){   System.out.println(“测试开始“);   System.out.println(“测试结束“);   尝试{   thread . sleep (60000);   }捕捉(InterruptedException e) {   e.printStackTrace ();   }   System.out.println(“睡眠结束“);   }   }

上述任务执行一次就没有再执行了。

所以我继续深入查看源码,发现问题在于CronSequenceGenerator。类的第二方法。

 @ configuration (“myScheduled")
  @EnableScheduling
  公开课ScheduledDemo {//每10秒执行一次
  @Scheduled (cron=?/10 * * * *和# 63;“)
  公共空间timmer () {
  System.out.println(“执行任务“);
  }
  }

2,动态定时器

//通过setCron方法修改任务周期
  @ component (“myScheduled")
  公共类ScheduledDemo实现SchedulingConfigurer {//默认的任务周期为10秒
  私人字符串cron=?/10 * * * *和# 63;“;
  
  @Override
  公共空间configureTasks (ScheduledTaskRegistrar taskRegistrar) {//TODO自动生成方法存根
  taskRegistrar。addTriggerTask(新Runnable () {
  
  @Override
  公共空间run () {//TODO自动生成方法存根
  System.out.println(“执行任务“);
  }
  
  },新的触发(){
  @Override
  公开日期nextExecutionTime (TriggerContext TriggerContext) {
  返回新CronTrigger (cron) .nextExecutionTime (triggerContext);
  }
  });
  }
  
  公共空间setCron(字符串cron) {
  这一点。cron=cron;
  }
  }

3,动态定时器:多线程定时任务执行,可以设置执行线程池数(默认一个线程)

@ component (“myScheduled")   公开课ScheduledImpl {   ,私人ScheduledFuture<和# 63的在未来;      @ autowired   私人ThreadPoolTaskScheduler ThreadPoolTaskScheduler;      @ bean   公共ThreadPoolTaskScheduler ThreadPoolTaskScheduler () {   返回新ThreadPoolTaskScheduler ();   }      @Override   公共空间setCron(最终字符串cron) {   stopCron ();   未来=threadPoolTaskScheduler。日程安排(新Runnable () {   @Override   公共空间run () {//TODO自动生成方法存根   System.out.println(“执行任务“);   }   },新的触发(){   @Override   公开日期nextExecutionTime (TriggerContext TriggerContext) {   如果(cron==null | |““.equals (cron)) {   返回null;   }   CronTrigger CronTrigger=new CronTrigger (cron);   返回cronTrigger.nextExecutionTime (triggerContext);   }   });   }      @Override   公共空间stopCron () {   如果(未来!=null) {   future.cancel(真正的);   }   }   }

Springboot实现定时任务安排重复执行操