springboot(五)Scheduling demo

在项目开发过程中,经常会使用到定时任务(跑批),springboot默认已经实现了,只需要添加相应的注解就可以实现

在启动类上加入注解,开启定时任务

@SpringBootApplication
@EnableScheduling
public class App {

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

}

创建跑批任务并注册到spring中管理,并在方法上加上跑批注解,配置core表达式

@Component
public class SchedulingTask1 {

    private int count = 0;

    @Scheduled(cron = "*/5 * * * * ?")//每5s执行一次
    public void process(){
        System.out.println("SchedulingTask1 is  "+ count+"times run");
        count++;
    }
}
@Component
public class SchedulingTask2 {

    SimpleDateFormat sdf = new SimpleDateFormat ("yyyyMMdd hh:mm:ss");

    @Scheduled(fixedRate = 5000)//每5s执行一次
    public void process(){
        System.out.println("process->This time  is  "+ sdf.format(new Date()) +"times run");
    }

    @Scheduled(fixedDelay = 10000)//上一次执行完毕时间点之后10秒再执行
    public void process2(){
        System.out.println("process2->This time  is  "+ sdf.format(new Date()) +"times run");
    }

    @Scheduled(initialDelay=10000, fixedRate=5000) //第一次延迟10秒后执行,之后按fixedRate的规则每5秒执行一次
    public void process3(){
        System.out.println("process3->This time  is  "+ sdf.format(new Date()) +"times run");
    }
}

启动项目即可运行,运行结果:

process->This time  is  20200510 11:43:37times run
process2->This time  is  20200510 11:43:37times run
SchedulingTask1 is  0times run
process->This time  is  20200510 11:43:42times run
SchedulingTask1 is  1times run
process->This time  is  20200510 11:43:47times run
process3->This time  is  20200510 11:43:47times run
process2->This time  is  20200510 11:43:47times run
SchedulingTask1 is  2times run
process->This time  is  20200510 11:43:52times run
process3->This time  is  20200510 11:43:52times run
SchedulingTask1 is  3times run
process->This time  is  20200510 11:43:57times run
process3->This time  is  20200510 11:43:57times run
process2->This time  is  20200510 11:43:57times run
SchedulingTask1 is  4times run
process->This time  is  20200510 11:44:02times run
process3->This time  is  20200510 11:44:02times run
SchedulingTask1 is  5times run
process->This time  is  20200510 11:44:07times run
process3->This time  is  20200510 11:44:07times run
process2->This time  is  20200510 11:44:07times run
SchedulingTask1 is  6times run
process->This time  is  20200510 11:44:12times run
process3->This time  is  20200510 11:44:12times run
SchedulingTask1 is  7times run
process->This time  is  20200510 11:44:17times run
process3->This time  is  20200510 11:44:17times run
process2->This time  is  20200510 11:44:17times run
SchedulingTask1 is  8times run

常用表达式如下:

0 * * * * ? 每1分钟执行一次
0 0 * * * ? 每天每1小时执行一次
0 0 10 * * ? 每天10点执行一次
0 * 14 * * ? 在每天下午14点到下午14:59期间的每1分钟执行一次 
0 30 10 1 * ? 每月1号上午10点30执行一次
0 10 10 10 * ? 每月10日上午10:10执行一次

*/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 12-15 * * ? 每天12-15点整点执行一次
0 0/5 * * * ? 每5分钟执行一次
0 0-5 15 * * ? 在每天下午15点到下午15:05期间的每1分钟执行一次
0 0/10 15 * * ? 在每天下午15点到下午15:50期间的每10分钟执行一次
0 0/10 15,18 * * ? 在每天下午15点到15:50期间和下午18点到18:50期间的每10分钟执行一次
0 0/30 10-15 * * ? 在每天上午10点到下午15:30每半小时执行一次
0 0 10,12,14 * * ? 每天上午10点,下午12点,14点执行一次

表达式生成、解析、反解析地址https://cron.qqe2.com/  https://qqe2.com/cron 示例如下

原文地址:https://www.cnblogs.com/flgb/p/12866344.html