开发工具:STS

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

前言:

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

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

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

任务一:

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

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

 package com.xm;

 import java.text.SimpleDateFormat;
import java.util.Date; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling; @EnableScheduling
@SpringBootApplication
public class Demo0061Application { public static void main(String[] args) {
SpringApplication.run(Demo0061Application.class, args);
       System.out.println("Start Job:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
}
}

2.定义任务

 package com.xm.job;

 import java.text.SimpleDateFormat;
import java.util.Date; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; @Component
public class HelloJob { @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(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("hello world");
} }

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.定义任务
     @Scheduled(cron="0/5 0-21 16 * * ?")
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.运行结果截图:

3.分析

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

 


                               2018-07-16

最新文章

  1. java 随机获取国内IP
  2. redis 快速入门(win7)
  3. iOS集成丁香园DXY OAuth 登陆 swift代码示例
  4. poj1511 最短路
  5. Python3缩进对逻辑的影响
  6. window7下statsvn统计代码量
  7. 今天学习的裸板驱动之GPIO实验学习心得
  8. dubbo 分布式架构学习视频链接
  9. Python撸支付宝红包教程,行走在灰色产业边缘的程序员!
  10. web 自定义标签
  11. [RUNOOB]C++继承
  12. JQuery的可见性选择器
  13. Django实现微信消息推送
  14. python代码在linux服务器一般的开头
  15. 现代C++之理解auto类型推断
  16. 虚树------sdoi2011<消耗战>
  17. iOS开发-Bug锦囊
  18. 【转】Oracle回收站(recyclebin)
  19. iOS 枚举讲解
  20. Scala基础知识笔记2

热门文章

  1. JAVA中的for循环
  2. Java基础04-数据的输入
  3. PHP会话管理
  4. ubuntu下搭建android开发环境核心篇安装AndroidStudio、sdk、jdk
  5. 021-动态生成验证码jsp代码模板
  6. 解决在 WP8/ WP8.1 项目中 引用 C++ 组件时出现的 System.TypeLoadException 错误
  7. 批量删除QQ空间说说
  8. SQLSERVER 2012的多维数据库浏览 ,不能多维的显示
  9. C# params 动态参数
  10. Mincost