十一、SpringBoot------定时任务

 
Google Translate GTranslateWinS Options
Google Translate GTranslateWinS Options

 开发工具:STS

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

前言:

以前咱们有讲过Quartz任务调度。html

如今,咱们来说解下Spring本身的任务调度。java

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

 

任务一:

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

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;spring

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
相关文章
相关标签/搜索