定时任务

SpringBoot定时任务

默认单线程

1.开启注解

在Spring启动类上加上@EnableScheduling

2.设置执行时间:

  • 使用fixRate:

    在方法上加上@Scheduled(fixRate=30* 60 *1000)

    fixRate=(小时* 分钟* 秒* 1000毫秒*)--只能实现指定间隔

  • 使用Cron表达式:

    在方法上加上@Scheduled(cron="0 0 9-22/4 * *")

    @Scheduled(cron="秒 分 时 日 月 星期 年(可选)")

    Cron表达式讲解:

    在线生成cron表达式:https://cron.qqe2.com/

    分隔符:

    符号 作用 例子
    列出所有值 如果在分钟中使用 5,8表示 分钟为5和8时触发
    - 范围 在分钟中使用5-8表示分钟从5到8每分钟都会触发
    * 该域的任意值 在分钟中使用*,表示对每分钟不做限制
    / 起始时间时触发,然后每隔固定时间触发一次 在分钟中使用5/8,表示五分钟时触发一次,之后每隔8分钟触发一次

    专有符号: --tips:除?外,Spring定时任务不支持其他转有符号

符号 作用 例子
只能用在月和星期互斥时
L 表示最后 ,只能出现在星期和月时 在周(周从星期日开始)中使用5L,表示最后一个星期四
W 表示周一到周五(工作日)只能出现在月中,系统自动离最近的工作日开始时触发
LW L和W连用,表示某月最后一个工作日
# 用于确定的每个月的第几个星期几只能出现在周中 设定3#2表示某月的第二个星期二执行
C 只能用在月和周中,需要关联日历 在月中使用5C 表示每个月的五号执行

使用异步多线程

  1. 开启异步注解

Spring启动类上加上@EnableScheduling的同时加上@EnableAsync

  1. 设置异步执行

在方法上加上@Scheduled(cron="0 0 9-22/4 * *")的同时加上@Async

Spring定时任务XML配置(注解形式几乎同上)

使用springTask: ----springTask为spring自带的

  1. 引用spring-context的依赖(使用springboot项目基本可省)

  2. 添加配置文件spring.xml,开启注解扫描

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd"> <context:component-scan base-package="com.code.xxx" /> </beans>
  1. 定义定时任务方法添加@Component--交给spring容器管理
public class Todo{
public void task1(){
System.out.println("task1开始")}
}
  1. 在spring.xml中配置:
<task:scheduled-tasks>
<!-- 每两秒执行一次-->
<task:scheduler ref="todo" method="task1" cron="0/2 * * * * ?"/>
</task:scheduled-tasks>
  1. 测试定时任务:

5.1获取springContext

   ApplicationContext context=new ClassPathXmlApplication("spring.xml")

5.2. 获取指定的Bean对象

    Todo todo1=(Todo)context.getBean("todo")
  1. 重要:在xml中开启定时任务驱动
<task:annotation-driven>

Java使用定时任务详解的更多相关文章

  1. Java之定时任务详解

    在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现.下面就其原理.实例以及Timer缺陷三个方面来解析java Timer定时器. 在 ...

  2. 淘宝JAVA中间件Diamond详解(2)-原理介绍

    淘宝JAVA中间件Diamond详解(二)---原理介绍 大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解.本次为大家带来的是diamond核心原理的介绍,主要包括server ...

  3. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  4. Java 序列化Serializable详解

    Java 序列化Serializable详解(附详细例子) Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连 ...

  5. Java String类详解

    Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...

  6. 最新java数组的详解

    java中HashMap详解 http://alex09.iteye.com/blog/539545 总结: 1.就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java ...

  7. JAVA IO 类库详解

    JAVA IO类库详解 一.InputStream类 1.表示字节输入流的所有类的超类,是一个抽象类. 2.类的方法 方法 参数 功能详述 InputStream 构造方法 available 如果用 ...

  8. 转:Java HashMap实现详解

    Java HashMap实现详解 转:http://beyond99.blog.51cto.com/1469451/429789 1.    HashMap概述:    HashMap是基于哈希表的M ...

  9. 【转】 java中HashMap详解

    原文网址:http://blog.csdn.net/caihaijiang/article/details/6280251 java中HashMap详解 HashMap 和 HashSet 是 Jav ...

随机推荐

  1. 能快速搭建三维场景,这款3D全场景编辑器你还没用过吗?

    今天就给大家分享一个非常好用的老子云3D全场景编辑器,不仅可以基于GIS数据,帮助用户快速搭建3D城市大场景.实现Web端流畅展示. 并且搭建的3D场景可离线开发成一个空间信息直观的.可交互.易于设计 ...

  2. VisionPro · C# · 加载与保存视觉工具包

    当项目程序被启动或更换程序产品型号时,我们需要提前加载对应的VisionPro的程序VPP文件,以提高程序调用效率. 加载代码: 1 using System; 2 using System.Wind ...

  3. python小题目练习(十二)

    题目:如下图所示 代码展示: """Author:mllContent:春节集五福Date:2020-01-17"""import rand ...

  4. SpringBoot项目集成Swagger启动报错: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is

    使用的Swagger版本是2.9.2.knife4j版本是2.0.4. SpringBoot 版本是2.6.2将SpringBoot版本回退到2.5.6就可以正常启动

  5. 基于后端和爬虫创建的代理ip池

    搭建免费的代理ip池 需要解决的问题: 使用什么方式存储ip 文件存储 缺点: 打开文件修改文件操作较麻烦 mysql 缺点: 查询速度较慢 mongodb 缺点: 查询速度较慢. 没有查重功能 re ...

  6. windows版anaconda+CUDA9.0+cudnn7+pytorch+tensorflow安装

    1.Anaconda 首先下载Anaconda,它是一个开源的python发行版本,含有众多科学工具包,直接安装anaconda免除了许多包的手动安装,点击这里下载. 按照你的实际情况选择下载.下载完 ...

  7. 使用Runnable和Callable接口实现多线程的区别

    使用Runnable和Callable接口实现多线程的区别 先看两种实现方式的步骤: 1.实现Runnable接口 public class ThreadDemo{ public static voi ...

  8. HashMap存储自定义类型键值和LinkedHashMap集合

    HashMap存储自定义类型键值 1.当给HashMap中存放自定义对象时,如果自定义对象是键存在,保证键唯一,必须复写对象的hashCode和equals方法. 2.如果要保证map中存放的key和 ...

  9. 螣龙安科携手51CTO:网络安全实战课程最新发布

    一年一度的双十一狂欢节即将来临了,相信各大电商平台也正摩拳擦掌跃跃欲试中.回顾2019年,阿里巴巴双十一狂欢节的单日交易额就达到了2684亿人民币,创造了电商交易历史上新的记录. 当人们愉快地购买着自 ...

  10. SQLZOO练习(一)SELECT BASICS,SELECT form world

    name continent area population gdp Afghanistan Asia 652230 25500100 20343000000 Albania Europe 28748 ...