基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的影响。

需要在配置类上添加@EnableScheduling 表示开启定时任务, 如果想关闭定时任务,注释掉这个注解就行了.

任务类加注解@Component ,方法(该方法不能有参数)加@Scheduled (该注解有多种参数)
cron  cron表达式
zone  定时任务执行的时区
fixedDelay和fixedDelayString  当前任务完成时,下一个任务延迟多久执行
fixedRate和fixedRateString  任务按固定频率执行
initialDelay和initialDelayString  延迟多少时间再开始执行第一次任务
注意事项 :
cron,fixedDelay,fixedDelayString 三者必须使用其中一种
cron 触发器不能和 initialDelay和initialDelayString 一起使用

1.毫秒为单位

这个案例是一秒执行一次定时任务.

  1. @Component
  2. @EnableScheduling //开启定时任务
  3. public class ScheduledTasks {
  4. private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
  5. @Scheduled(fixedRate = 1000) /*单位是毫秒*/
  6. public void reportCurrentTime() {
  7. System.out.println("当前时间:" + dateFormat.format(new Date()));
  8. }
  9. }