Java使用定时任务详解
定时任务
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 表示每个月的五号执行 |
使用异步多线程
- 开启异步注解
Spring启动类上加上@EnableScheduling的同时加上@EnableAsync
- 设置异步执行
在方法上加上@Scheduled(cron="0 0 9-22/4 * *")的同时加上@Async
Spring定时任务XML配置(注解形式几乎同上)
使用springTask: ----springTask为spring自带的
引用spring-context的依赖(使用springboot项目基本可省)
添加配置文件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>
- 定义定时任务方法添加@Component--交给spring容器管理
public class Todo{
public void task1(){
System.out.println("task1开始")}
}
- 在spring.xml中配置:
<task:scheduled-tasks>
<!-- 每两秒执行一次-->
<task:scheduler ref="todo" method="task1" cron="0/2 * * * * ?"/>
</task:scheduled-tasks>
- 测试定时任务:
5.1获取springContext
ApplicationContext context=new ClassPathXmlApplication("spring.xml")
5.2. 获取指定的Bean对象
Todo todo1=(Todo)context.getBean("todo")
- 重要:在xml中开启定时任务驱动
<task:annotation-driven>
Java使用定时任务详解的更多相关文章
- Java之定时任务详解
在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现.下面就其原理.实例以及Timer缺陷三个方面来解析java Timer定时器. 在 ...
- 淘宝JAVA中间件Diamond详解(2)-原理介绍
淘宝JAVA中间件Diamond详解(二)---原理介绍 大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解.本次为大家带来的是diamond核心原理的介绍,主要包括server ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Java 序列化Serializable详解
Java 序列化Serializable详解(附详细例子) Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连 ...
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
- 最新java数组的详解
java中HashMap详解 http://alex09.iteye.com/blog/539545 总结: 1.就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java ...
- JAVA IO 类库详解
JAVA IO类库详解 一.InputStream类 1.表示字节输入流的所有类的超类,是一个抽象类. 2.类的方法 方法 参数 功能详述 InputStream 构造方法 available 如果用 ...
- 转:Java HashMap实现详解
Java HashMap实现详解 转:http://beyond99.blog.51cto.com/1469451/429789 1. HashMap概述: HashMap是基于哈希表的M ...
- 【转】 java中HashMap详解
原文网址:http://blog.csdn.net/caihaijiang/article/details/6280251 java中HashMap详解 HashMap 和 HashSet 是 Jav ...
随机推荐
- Javaweb-Servlet学习
1.Servlet简介 Servlet就是sun公司开发动态web的一门技术 Sun在这些API中提供一个借口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤: 编写一个 ...
- 深入理解springboot的自动注入
一.开篇 在平时的开发过程中用的最多的莫属springboot了,都知道springboot中有自动注入的功能,在面试过程中也会问到自动注入,你知道自动注入是怎么回事吗,springboot是如何 ...
- 分布式事务(Seata) 四大模式详解
前言 在上一节中我们讲解了,关于分布式事务和seata的基本介绍和使用,感兴趣的小伙伴可以回顾一下<别再说你不知道分布式事务了!> 最后小农也说了,下期会带给大家关于Seata中关于sea ...
- C++ 练气期之指针所指何处
1. 指针 指针是一种C++数据类型,用来描述内存地址. 什么是内存地址? 内存中的每一个存储单元格都有自己的地址,地址是使用二进制进行编码.地址从形态上看是一个整型数据类型.但是,它的数据含义并不表 ...
- 爬虫(6) - 网页数据解析(2) | BeautifulSoup4在爬虫中的使用
什么是Beautiful Soup库 Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能 它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简 ...
- URL网络编程
package com.atguigu.java1; import java.io.FileOutputStream; import java.io.IOException; import java. ...
- 异常注意事项_多异常的捕获处理和异常注意事项_finally有return语句
异常注意事项_多异常的捕获处理 多个异常使用捕获又该如何处理呢? 1. 多个异常分别处理 2. 多个异常一次捕获,多次处理 3. 多个异常一次捕获一次处理 public class Demo01Exc ...
- Tomcat深入浅出——Filter与Listener(五)
一.Filter过滤器 1.1 Filter过滤器的使用 这是过滤器接口的方法 public interface Filter { default void init(FilterConfig fil ...
- 攻防世界MISC进阶区--39、40、47
39.MISCall 得到无类型文件,010 Editor打开,文件头是BZH,该后缀为zip,打开,得到无类型文件,再改后缀为zip,得到一个git一个flag.txt 将git拖入kali中,在g ...
- from Crypto.Cipher import AES报错
python 在 Windows下使用AES时要安装的是pycryptodome 模块 pip install pycryptodome python 在 Linux下使用AES时要安装的是pyc ...