Spring的定时任务
@Sceduled
标注在方法上,定时执行这个方法
// 在springboot启动类上配置 @EnableScheduling // 开启定时功能
@Scheduled标注在方法上,设置定时时间
使用条件:
- 注解所在的类必须是注册在spring 容器中的组件
- 需要使用注解开启定时功能的支持
- 目前只测试了在web项目中使用
每过两秒执行一次的实例:
@Component
public class TimeService {
private int num = 0;
// 定时执行,参数:cron表达式
@Scheduled(cron = "0/2 * * * * ?")
public void count(){
num++;
System.out.println("执行了: "+num+" 次");
}
}
@Async
用于:告诉speing这是一个异步方法,SpringBoot就会自己开一个线程池,进行调用!
// 在springboot启动类上配置
@EnableAsync // 开启异步注解共功能
cron 中,还有一些特殊的符号,含义如下:
- (*)星号:可以理解为每的意思,每秒、每分、每天、每月、每年……。
- (?)问号:问号只能出现在日期和星期这两个位置,表示这个位置的值不确定,每天 3 点执行,所以第六位星期的位置是不需要关注的,就是不确定的值。同时,日期和星期是两个相互排斥的元素,通过问号来表明不指定值。假如 1 月 10 日是星期一,如果在星期的位置是另指定星期二,就前后冲突矛盾了。
- (-)减号:表达一个范围,如在小时字段中使用“10-12”,则表示从 10~12 点,即 10、11、12。
- (,)逗号:表达一个列表值,如在星期字段中使用“1、2、4”,则表示星期一、星期二、星期四。
- (/)斜杠:如 x/y,x 是开始值,y 是步长,比如在第一位(秒) 0/15 就是,从 0 秒开始,每 15 秒,最后就是 0、15、30、45、60,另 */y,等同于 0/y。