11、SpringBoot------定时任务

 开发工具:STS

代码下载链接:https://github.com/theIndoorTrain/Springboot/tree/52ef6c0c805913db1e66ed18671c322e284233f0

前言:

之前我们有讲过Quartz任务调度。

现在,我们来讲解下Spring自己的任务调度。

在Springboot项目中,这种超级简单的调度方式将会给我们带来便利。

 

任务一:

5s后开始,每10s执行一次,执行一次任务要2s;

1.在启动类中开启任务调度,加上@EnableScheduling

 1 package com.xm;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5 
 6 import org.springframework.boot.SpringApplication;
 7 import org.springframework.boot.autoconfigure.SpringBootApplication;
 8 import org.springframework.scheduling.annotation.EnableScheduling;
 9 
10 @EnableScheduling
11 @SpringBootApplication
12 public class Demo0061Application {
13 
14     public static void main(String[] args) {
15         16         SpringApplication.run(Demo0061Application.class, args);
       System.out.println("Start Job:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
17 } 18 }

2.定义任务

 1 package com.xm.job;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5 
 6 import org.springframework.scheduling.annotation.Scheduled;
 7 import org.springframework.stereotype.Component;
 8 
 9 @Component
10 public class HelloJob {
11     
12     @Scheduled(initialDelay=5000,fixedRate=10000)
13     public void run() {
14         System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
15         try {
16             Thread.sleep(2000);
17         } catch (InterruptedException e) {
18             // TODO Auto-generated catch block
19             e.printStackTrace();
20         }
21         System.out.println("hello world");
22     }
23 
24 }

3.运行结果截图

4.分析

1.initialDelay=5000:任务开始时间为5s以后
2.fixedRate=10000:任务每10s之内完成一次
在这里任务时间是小于fixedRate
现在我们让任务运行时间改为11s
       @Scheduled(initialDelay=5000,fixedRate=10000)
    public void run() {
        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        try {
            Thread.sleep(11000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("hello world");
    }    
运行结果为:


任务二:


5s后开始,每间隔10s执行一次,执行一次任务要2s;

1.定义任务

    @Scheduled(initialDelay=5000,fixedDelay=10000)
    public void run() {
        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        try {
            //Thread.sleep(11000);
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("hello world");
    }    

 

2.运行结果截图:

分析:

fixedDelay:每次任务完成结束后再开始计时



任务三:
每天16:00:00开始到16:21:59每5s执行一次
1.定义任务
 1     @Scheduled(cron="0/5 0-21 16 * * ?")
 2     public void run() {
 3         System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
 4         try {
 5             //Thread.sleep(11000);
 6             Thread.sleep(2000);
 7         } catch (InterruptedException e) {
 8             // TODO Auto-generated catch block
 9             e.printStackTrace();
10         }
11         System.out.println("hello world");
12     }

 

2.运行结果截图:

 

 

 

3.分析

这里运用到了Cron表达式,请点击这里查看详解。3.初识Cron表达式

 



                               2018-07-16

 

posted @ 2018-07-16 16:36  零度微笑  阅读(798)  评论(0编辑  收藏  举报