第11章 @Scheduled定时任务

系统运行中常常会遇到定时任务或延时任务,SpringBoot中提供了@Scheduled注解对定时或延时任务的声明,其主要用法

  • @Scheduled(fixedRate=2000)
    上一次开始执行时间点后2秒再次执行

  • @Scheduled(fixedDelay=2000)
    上一次执行完毕时间点后2秒再次执行

  • @Scheduled(initialDelay=1000, fixedDelay=2000
    第一次延迟1秒执行,然后在上一次执行完毕时间点后2秒再次执行

  • @Scheduled(cron="* * * * * ?"):按cron规则执行。
    常用示例:
    @Scheduled(cron="0 30 14 * * ?") 每天14:30执行
    @Scheduled(cron="0 0 0 10 * ?") 每月10日执行
    @Scheduled(cron="0 * 14 * * ?") 每天下午的 2点到2点59分每分触发
    @Scheduled(cron="0 15 10 * * ? 2005") 2005年每天10点15分触发
    @Scheduled(cron="0 0/5 14 * * ?") 每天下午的 2点到2点59分(整点开始,每隔5分触发)
    @Scheduled(cron="0 0/5 14,18 * * ?") 每天下午的 2点到2点59分(整点开始,每隔5分触发) 每天下午的 18点到18点59分(整点开始,每隔5分触发)
    @Scheduled(cron="0 0-5 14 * * ?") 每天下午的 2点到2点05分每分触发
    @Scheduled(cron="0 10,44 14 ? 3 WED") 3月分每周三下午的 2点10分和2点44分触发
    @Scheduled(cron="0 15 10 ? * MON-FRI") 从周一到周五每天上午的10点15分触发
    @Scheduled(cron="0 15 10 15 * ?") 每月15号上午10点15分触发
    @Scheduled(cron="0 15 10 L * ?") 每月最后一天的10点15分触发
    @Scheduled(cron="0 15 10 ? * 6L") 每月最后一周的星期五的10点15分触发
    @Scheduled(cron="0 15 10 ? * 6L 2002-2005") 从2002年到2005年每月最后一周的星期五的10点15分触发
    @Scheduled(cron="0 15 10 ? * 6#3") 每月的第三周的星期五开始触发
    @Scheduled(cron="0 0 12 1/5 * ?") 每月的第一个中午开始每隔5天触发一次
    @Scheduled(cron="0 11 11 11 11 ?") 每年的11月11号 11点11分触发

示例:实现以下两个触发任务
(1)每天中午12时触发,在控制台上打印HelloWorld。
(2)程序运行后每隔1小时再次执行,在控制台上打印Haha。
任务类

@Component
public class MyJob{
    @Scheduled(cron="0 0 12 * * ?")
    public void job1() {
        System.out.println("Hello World");
    }
    @Scheduled(fixedDelay=3600000)
    public void job2() {
        System.out.println("Haha");
    }
}

Application类
添加启动定时任务的注解@EnableScheduling

@SpringBootApplication
@EnableScheduling
public class Myproj2Application {

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

}

启动SpringBoot程序后,可以看到任务触发。(可以调整任务起始时间和重复执行的间隔观察执行效果)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容