SpringTask定时任务的总结

SpringTask定时任务

定时任务在开发中需要用到的频率是相对来说比较高的, 很多业务的处理需要用到定时任务, 例如定时扫描数据库, 定时发送消息到消息队列等等; Spring提供了定时任务机制供开发使用, 以下是对定时任务的一点总结, 方便后续工作中遇到类似的需求的时候的资料查阅;

 

Spring 从3.0之后提供SpringTask实现了任务调度, 支持非常灵活, 支持按日历调度, 相比Quartz功能稍简单, 但是在开发过程中可以说基本上都够用, 也支持注解编程方式; SpringTask主要有两种任务的执行方式, 分别是SpringTask串行, SpringTask并行.

 

SpringTask串行

1,编写任务类, 如果是SpringBoot项目, 需要在工程的启动类上添加上@EnableScheduling, 该注解的意思是开启Spring定时任务支持; 新建任务类testTask如下:

@Scheduled(fixedRate = 5000) //上次执行开始时间后五秒执行
@Scheduled(fixedDelay = 5000) //上次执行完毕后五秒执行
@Scheduled(initialDelay=3000, fixedRate=5000) //第一次延迟3秒, 以后每隔五秒执行一次
@Scheduled(cron="0/3 * * * * *") //每隔三秒执行一次

 

 

 

到这就要说下cron表达式了, 它表达了定时任务的时间控制机制, 这也是最容易忘却的地方, 在此坐下大致说明:

cron 表达式包括6部分(对应代码中的cron表达式):@Scheduled(cron="0/3 * * * * *")

 

秒(0~59) 分钟(0~59) 小时(0~23) 月中的天(1~31) 月(1~12) 周中的天

(填写MON,TUE,WED,THU,FRI,SAT,SUN,或数字1~7 1表示MON,依次类推)

特殊字符介绍:

“/”字符表示指定数值的增量

“*”字符表示所有可能的值

“-”字符表示区间范围

"," 字符表示列举

“?”字符仅被用于月中的天和周中的天两个子表达式,表示不指定值

 

例子:

0/3 * * * * * 每隔3秒执行

0 0/5 * * * * 每隔5分钟执行

0 0 0 * * * 表示每天0点执行

0 0 12 ? * WEN 每周三12点执行

0 15 10 ? * MON-FRI 每月的周一到周五10点 15分执行

0 15 10 ? * MON,FRI 每月的周一和周五10点 15分执行

串行任务测试

 

经过测试发现, 两个串行任务是由一个线程执行, task方法执行完后task2再执行;

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值