三种定时任务方式分别为

  1. org.springframework.scheduling.annotation.Scheduled
  2. java.util.concurrent.ScheduledExecutorService
  3. java.util.Timer

示例如下:

1.   新建Maven项目  schedule

2.   pom.xml

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4. http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.  
  6. <modelVersion>4.0.0</modelVersion>
  7. <groupId>com.java</groupId>
  8. <artifactId>schedule</artifactId>
  9. <version>1.0.0</version>
  10.  
  11. <parent>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-parent</artifactId>
  14. <version>2.0.5.RELEASE</version>
  15. </parent>
  16.  
  17. <dependencies>
  18.  
  19. <!-- Spring Boot -->
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-web</artifactId>
  23. </dependency>
  24.  
  25. <!-- 热部署 -->
  26. <dependency>
  27. <groupId>org.springframework</groupId>
  28. <artifactId>springloaded</artifactId>
  29. <version>1.2.8.RELEASE</version>
  30. <scope>provided</scope>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-devtools</artifactId>
  35. <scope>provided</scope>
  36. </dependency>
  37.  
  38. </dependencies>
  39.  
  40. <build>
  41. <finalName>${project.artifactId}</finalName>
  42. <plugins>
  43. <plugin>
  44. <groupId>org.apache.maven.plugins</groupId>
  45. <artifactId>maven-compiler-plugin</artifactId>
  46. <configuration>
  47. <source>1.8</source>
  48. <target>1.8</target>
  49. <encoding>UTF-8</encoding>
  50. </configuration>
  51. </plugin>
  52.  
  53. <plugin>
  54. <groupId>org.springframework.boot</groupId>
  55. <artifactId>spring-boot-maven-plugin</artifactId>
  56. <executions>
  57. <execution>
  58. <goals>
  59. <goal>repackage</goal>
  60. </goals>
  61. </execution>
  62. </executions>
  63. </plugin>
  64. </plugins>
  65. </build>
  66. </project>

3.   ScheduleStarter.java

  1. package com.java;
  2.  
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.scheduling.annotation.EnableScheduling;
  6.  
  7. @EnableScheduling
  8. @SpringBootApplication
  9. public class ScheduleStarter {
  10.  
  11. public static void main(String[] args) {
  12. SpringApplication.run(ScheduleStarter.class, args);
  13. }
  14.  
  15. }

4.   ScheduledDemo.java

  1. package com.java.schedule;
  2.  
  3. import org.springframework.scheduling.annotation.Scheduled;
  4. import org.springframework.stereotype.Component;
  5.  
  6. @Component
  7. public class ScheduledDemo {
  8.  
  9. @Scheduled(cron = "0/5 * * * * *")
  10. public void demoTask() {
  11. System.out.println("[ ScheduledDemo ]\t\t" + System.currentTimeMillis());
  12. }
  13.  
  14. }

5.   ScheduledExecutorDemo.java

  1. package com.java.schedule;
  2.  
  3. import java.util.concurrent.ScheduledExecutorService;
  4. import java.util.concurrent.ScheduledThreadPoolExecutor;
  5. import java.util.concurrent.TimeUnit;
  6.  
  7. import javax.annotation.PostConstruct;
  8. import javax.annotation.PreDestroy;
  9.  
  10. import org.springframework.stereotype.Component;
  11.  
  12. @Component
  13. public class ScheduledExecutorDemo {
  14.  
  15. private ScheduledExecutorService executor = new ScheduledThreadPoolExecutor(5);
  16.  
  17. @PostConstruct
  18. public void demoTask() {
  19. executor.scheduleAtFixedRate(new Runnable() {
  20.  
  21. @Override
  22. public void run() {
  23. System.out.println("[ ScheduledExecutorDemo ]\t" + System.currentTimeMillis());
  24. }
  25. }, 0, 5, TimeUnit.SECONDS);
  26.  
  27. }
  28.  
  29. @PreDestroy
  30. public void destory() {
  31. executor.shutdown();
  32. }
  33.  
  34. }

6.   TimerDemo.java

  1. package com.java.schedule;
  2.  
  3. import java.util.Timer;
  4. import java.util.TimerTask;
  5.  
  6. import javax.annotation.PostConstruct;
  7. import javax.annotation.PreDestroy;
  8.  
  9. import org.springframework.stereotype.Component;
  10.  
  11. @Component
  12. public class TimerDemo {
  13.  
  14. private Timer timer = new Timer(true);
  15.  
  16. @PostConstruct
  17. public void demoTask() {
  18. timer.scheduleAtFixedRate(new TimerTask() {
  19.  
  20. @Override
  21. public void run() {
  22. System.out.println("[ TimerDemo ]\t\t\t" + System.currentTimeMillis());
  23. }
  24. }, 0, 5000);
  25.  
  26. }
  27.  
  28. @PreDestroy
  29. public void destory() {
  30. timer.cancel();
  31. }
  32.  
  33. }

7.   运行ScheduleStarter.java,启动测试

控制台每隔5秒打印如下信息

  1. [ ScheduledDemo ] 1548156125005
  2. [ TimerDemo ] 1548156127556
  3. [ ScheduledExecutorDemo ] 1548156127566

三种定时任务都正常运行!

.

Spring boot 集成三种定时任务方式的更多相关文章

  1. Spring boot 集成三种拦截方式

    三种拦截方式分别为: javax.servlet.Filter org.springframework.web.servlet.HandlerInterceptor org.aspectj.lang. ...

  2. spring Bean的三种配置方式

    Spring Bean有三种配置方式: 传统的XML配置方式 基于注解的配置 基于类的Java Config 添加spring的maven repository <dependency> ...

  3. Spring Boot 项目几种启动方式

    Spring Boot 项目几种启动方式 1. 使用 main 启动 jar xxxx.jar 2. 使用 mvn 启动 mvn spring-boot:run 3. 使用 Spring Boot c ...

  4. Spring IOC以及三种注入方式

    IOC是spring的最基础部分,也是核心模块,Spring的其他组件模块和应用开发都是以它为基础的.IOC把spring的面向接口编程和松耦合的思想体现的淋漓尽致. IOC概念 IOC(Invers ...

  5. Spring IOC 中三种注入方式

    项目错误知识点记录 正文 最近在项目的时候,用到Spring框架,Spring框架提供了一种IOC的自动注入功能,可以很轻松的帮助我们创建一个Bean,这样就省的我们四处写new Object()这样 ...

  6. Spring Boot集成quartz实现定时任务并支持切换任务数据源

    org.quartz实现定时任务并自定义切换任务数据源 在工作中经常会需要使用到定时任务处理各种周期性的任务,org.quartz是处理此类定时任务的一个优秀框架.随着项目一点点推进,此时我们并不满足 ...

  7. Spring:Spring-IOC三种注入方式、注入不同数据类型

    一.Spring IOC(依赖注入的三种方式): 1.Setter方法注入 package com.jpeony.spring.setter; import com.jpeony.spring.com ...

  8. Spring常用的三种注入方式

    好文要收藏,摘自:https://blog.csdn.net/a909301740/article/details/78379720 Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入 ...

  9. Spring Boot实践——三种拦截器的创建

    引用:https://blog.csdn.net/hongxingxiaonan/article/details/48090075 Spring中的拦截器 在web开发中,拦截器是经常用到的功能.它可 ...

随机推荐

  1. Java-IO读写文件简单操作2

    承接Java-IO读写文件简单操作,这里再次写个小demo巩固一下知识点. 代码文件:demo.java package com.test.demo; import java.io.*; public ...

  2. 软件使用---Eclipse

    代码提示快捷操作.这个叫做,内容分析(content assist) 1.设置自动提示: 2.设置快捷键:

  3. oracle 11g 将非分区表转换为分区表在线重定义

    --操作的用户需要有以下的权限 GRANT CONNECT, RESOURCE TO CMIGDW; GRANT EXECUTE ON DBMS_REDEFINITION TO CMIGDW; GRA ...

  4. HIbernate基于外键的查询

    此文以个人开发记录为目的,笔拙勿喷 项目是背景是公司的E签宝平台VIP频道项目进行关联账户增加后,需要做删除时的,联合查询 当前主要表结构账户表Account. CREATE TABLE `accou ...

  5. css内容整理2

    10.6.css伪类.伪元素 伪类用于向某些选择器添加特殊效果:伪元素用于将特殊的效果添加达到某选择器. 区别:伪类的效果可通过添加一个实际的类达到,用::伪元素效果则需要添加一个实际的元素,用:: ...

  6. powerdesigner低版本打开高版本方式为只读导致无法保存PD只读read-only-mode

    由于版本号不一致 打开PD文件后提示: 点击[确定]后打开,点击[取消]后打不开 但打开后修改完毕保存提示: 解决办法: pdm文件实际上是个xml文件,直接用文本编辑器打开该文件修改版本号即可 把根 ...

  7. Spring课程 Spring入门篇 3-2 Spring bean装配(上)之bean的生命周期

    课程链接: 本节主要讲了三大块内容 1 bean的生命周期概念 2 bean的初始化和销毁的三种方式对比(代码演练) 3 总结 1 bean的生命周期概念 1.1 bean的定义:xml中关于bean ...

  8. Java I/O模型

    本文转发自技术世界,原文链接 http://www.jasongj.com/java/nio_reactor/ 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请求的处理会导致整个流程的 ...

  9. php赋值运算符

    = 赋值 += $x+=3相当于$x = $x+3; -= *= /+ %= .=

  10. Lync二次开发关于Lync启动退出问题

    以前使用C++开发的version.dll文件,由于各个用户环境的不同,造成某些用户加载不了我们开发的插件,并且写version.dll的同事还没找到好的解决办法,所以得换一种思路去解决这个问题,就是 ...