简单定时器任务调度 @schedule

使用  @schedule 注解 完成各种定时设定。官方 API

@Scheduled中可以指定如下3中时间表达式:

1.

@Scheduled(fixedRate=2000)  // 每隔2秒执行一次
public void fixedRate(){
    System.out.println("fixedRate...");
}

2.

@Scheduled(fixedDelay=2000)  // 在上一次执行完成后延迟 2 秒再执行该方法
public void fixedDelay(){
    System.out.println("fixedDelay...");
}

3.

@Scheduled(cron=" * * * * * * ")  // 每秒执行
public void cron(){
    System.out.println("cron...");
}


cron 里其实是 cron 表达式。一个cron表达式是由六个或者七个子表达式(字段)组成的字符串。而子表达式或者称为字段之间用空格隔开。

字段名 是否必需 允许的值 允许的特殊字符
秒(seconds) Y 0-59 , - * /
分(minutes) Y 0-59 , - * /
时(hours) Y 0-23 , - * /
天(day of month) Y 1-31
, - * /L W C
月(month) Y 0-11 或者 JAN-DEC , - * /
星期(day of week) Y 1-7 或者 SUN-SAT , - * /?L C#
年(year) N 1970-2099或者不写 , - * /

还记得上面的六个 “*”么 ?从第一位到最后一位分别表示秒 分 时 天 月 星期 年 最后一位年可以不写。

对于以上特殊字符,可以这么理解:

“,”表示and

“-”表示一个区间段,即开始到结束

“*”表示全选,即用汉语中的“每”或者英文中的every/each/per

“/”表示一个区间段的时长,例如放在第一位“/10”则表示每10秒

“L”表示最后,即Last

“W”表示weekday,即工作日也就是周一到周五

“C”表示canlendar,即日历,例如“1C”在星期位上就是包括日历上的星期日

“#”表示序列,如“#2”表示第二


如果使用 spring boot 搭建,定时器不运行,可参考

https://spring.io/guides/gs/scheduling-tasks/

参考来自:

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/annotation/Scheduled.html

http://stackoverflow.com/questions/11608531/injecting-externalized-value-into-spring-annotation

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/annotation/Scheduled.html

http://my.oschina.net/crazyharry/blog/347687

你可能感兴趣的:(简单定时器任务调度 @schedule)