180801-Spring之定时任务基本使用篇

2018-08-01  本文已影响20人  一灰灰blog
image.png

文章链接:https://liuyueyi.github.io/hexblog/2018/08/01/180801-Spring之定时任务基本使用篇/

Spring之定时任务基本使用篇

spring-boot项目中,想添加一个定时任务,可以怎么办?

本篇博文则主要集中在在SpringBoot项目中,怎么使用定时任务

I. 基本使用

1. demo

在SpringBoot项目中,使用定时任务需要先开启对应的配置,一个简单的demo如下

@EnableScheduling
@SpringBootApplication
public class QuickMediaApplication {

    public static void main(String[] args) {
        SpringApplication.run(QuickMediaApplication.class, args);
    }

    @Scheduled(cron = "0/1 * * * * ?")
    public void sc1() throws InterruptedException {
        System.out.println(Thread.currentThread().getName() + " | sc1 " + System.currentTimeMillis());
    }
}

上面的代码足够简单,基本上没有什么好额外解释的,只是注意下要使用定时任务,必须加上 @EnableScheduling注解

2. cron表达式

另外一个有意思的就是@Scheduled注解中的cron是怎么定义的,上面那个是啥意思?

Cron定义如下

Seconds Minutes Hours DayofMonth Month DayofWeek Year
Seconds Minutes Hours DayofMonth Month DayofWeek

上面每个坑位,可以取得值不一样,先分别说明几个可能见到的符号

根据上面的说明,前面的crond表达式含义就比较清楚了

0/1 * * * * ?
每s种执行一次

3. 实例说明

下面给出一些常见的实例说明

0 0 10,14,16 * * ? 每天上午10点,下午2点,4点 
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时 
0 0 12 ? * WED 表示每个星期三中午12点 
"0 0 12 * * ?" 每天中午12点触发 
"0 15 10 ? * *" 每天上午10:15触发 
"0 15 10 * * ?" 每天上午10:15触发 
"0 15 10 * * ? *" 每天上午10:15触发 
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发 
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发 
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 
"0 15 10 15 * ?" 每月15日上午10:15触发 
"0 15 10 L * ?" 每月最后一日的上午10:15触发 
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发

4. 疑问

上面只是介绍了简单的使用姿势,但有几个自然而然的疑问有待验证

上面这些问题先跑出来,留待下次结合实例给出回答

II. 其他

1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

小灰灰Blog&公众号

QrCode

知识星球

zhishi
上一篇下一篇

猜你喜欢

热点阅读