zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    博客园设置自定义壁纸 模板
    html常用标签及属性,常用英语单词
    解释器安装与环境变量的添加
    计算机基础知识
    python 标准库大全
    进程的状态转换详解
    python 合集set,交集,并集,差集,对称差集别搞混
    vue组件,可以通过npm引用的组件
    use vue vuex vue-router, not use webpack
    Webpack+Vue如何导入Jquery和Jquery的第三方插件
  • 原文地址:https://www.cnblogs.com/TimerHotel/p/springboot11.html
Copyright © 2011-2022 走看看