java spring定时器_JAVA中 Spring定时器的两种实现方式
目前有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz。
1.Java Timer定时
首先继承java.util.TimerTask类实现run方法
import java.util.TimerTask;
public class EmailReportTask extends TimerTask{
@Override
public void run() {
...
}
}
在Spring定义
...
配置Spring定时器
86400000value>
property>
bean>
timerTask属性告诉ScheduledTimerTask运行哪个。86400000代表24个小时
启动Spring定时器
Spring的TimerFactoryBean负责启动定时任务
list>
property>
bean>
scheduledTimerTasks里显示一个需要启动的定时器任务的列表。
可以通过设置delay属性延迟启动
86400000value>
property>
3600000value>
property>
bean>
这个任务我们只能规定每隔24小时运行一次,无法精确到某时启动
2.Quartz定时器
首先继承QuartzJobBean类实现executeInternal方法
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class EmailReportJob extends QuartzJobBean{
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
...
}
}
在Spring中定义
EmailReportJobvalue>
property>
entry>
map>
property>
bean>
在这里我们并没有直接声明一个EmailReportJob Bean,而是声明了一个JobDetailBean。这个是Quartz的特点。JobDetailBean是Quartz的org.quartz.JobDetail的子类,它要求通过jobClass属性来设置一个Job对象。
使用Quartz的JobDetail中的另一个特别之处是EmailReportJob的courseService属性是间接设置的。JobDetail的jobDataAsMap属性接受一个Map,包括设置给jobClass的各种属性,当。JobDetailBean实例化时,它会将courseService Bean注入到EmailReportJob 的courseService 属性中。
启动定时器
Quartz的org.quartz.Trigger类描述了何时及以怎样的频度运行一个Quartz工作。Spring提供了两个触发器SimpleTriggerBean和CronTriggerBean。
SimpleTriggerBean与scheduledTimerTasks类似。指定工作的执行频度,模仿scheduledTimerTasks配置 .
360000value>
property>
86400000value>
property>
bean>
startDelay也是延迟1个小时启动
CronTriggerBean指定工作的准确运行时间
0 0 6 * * ?value>
property>
bean>
属性cronExpression告诉何时触发。最神秘就是cron表达式:
Linux系统的计划任务通常有cron来承担。一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。从左到右:
1.秒2.分3.小时4.月份中的日期(1-31)5.月份(1-12或JAN-DEC)6.星期中的日期(1-7或SUN-SAT)7.年份(1970-2099)
每个元素都显示的规定一个值(如6),一个区间(9-12),一个列表(9,11,13)或一个通配符(*)。因为4和6这两个元素是互斥的,因此应该通过设置一个问号(?)来表明不想设置的那个字段,“/”如果值组合就表示重复次数(10/6表示每10秒重复6次)。
启动定时器
list>
property>
bean>
triggers属性接受一组触发器。
好了,本文内容到此结束了,写的还不错吧,有不足之处,欢迎各位大侠提出宝贵意见。
java spring定时器_JAVA中 Spring定时器的两种实现方式相关推荐
- java map遍历_Java中Map集合的两种遍历方式
Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...
- java中两种遍历集合的方式_Java中Map集合的两种遍历方式
Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...
- java多线程区别_Java中实现多线程的两种方式之间的区别
Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...
- 1.JavaScript中定义数组的两种主要方式
JavaScript中定义数组的两种主要方式(new Array()和[]方式) new Array() ①可以用像JAVA的那种写法的方式定义,如 var arr = new Array() 这样定 ...
- java 调用枚举种方法_Java中枚举类型的一种使用方式
今天改同事的代码发现同事的代码中有大量的if else语句.很不美观而且可读性太差. 因为需要给前端一个key,value的列表.这个列表写死.然而同事的代码. 放几张图,大家自己感受.我都不知道以后 ...
- java多线程同步的四种方法_java中实现多线程的两种方法
java多线程有几种实现方法,都是什么?同步有几种实java中多线程的实现方法有两种:1.直接继承thread类:2.实现runnable接口:同步的实现方法有五种:1.同步方法:2.同步代码块:3. ...
- java中集合的排序_Java中集合排序的两种方法
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.u ...
- 【Spring AOP(2)篇】原理及两种实现方式(cglibjdk动态代理)
简介: Spring AOP(Aspect-Oriented Programming,面向切面编程)是 Spring 框架的一个重要特性,用于解耦和切割业务逻辑,是实现面向切面编程的重要手段之一.本文 ...
- Java中定义字符串的两种常见方式、使用==和equals()比较字符串
在讲使用==和equals()比较字符串之前,我们首先要讲定义字符串的两种常见方式,一种是定义一个常量,即直接定义字符串,一种是通过new关键字定义一个变量,即使用String类定义字符串,如下图: ...
- Java中匿名类的两种实现方式
使用匿名内部类课使代码更加简洁.紧凑,模块化程度更高.内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到.然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式 ...
最新文章
- python封装api linux_python Socket编程-python API 与 Linux Socket API之间的关系
- linux 脏牛提权 cve-2016-5159
- 性能提升-停用模块更新监控
- ArrayList练习——存储随机、存储自定义、按指定格式输出、筛选集合
- 框架:SpringMVC常用注解总结
- 菜鸟教程python3 mysql_Python 操作 MySQL 数据库
- allegropcb怎么导出成cad_私藏技巧分享!CAD中的表格坐标快速输出成Excel!
- gan学到的是什么_GAN推动生物学研究
- 【华为大咖分享】9.2018加速度,洞悉DevOps高效能组织的秘密(后附PPT下载地址)
- fastapi 的启动方式
- 学习 Python 这么多年,掉过的那些安全漏洞
- 用完HttpWebResponse时别忘了调用Close方法
- sql server dba
- 【心电信号】基于matlab Simulink胎儿心电信号提取【含Matlab源码 1550期】
- 实现atoi函数(C++实现)
- 一台服务器如何做两个站点,一台服务器实现多个Web站点
- 京东商城选择地址信息
- windows 编译n2n
- 若依管理系统漏洞利用
- [Caffe] Caffe介绍
热门文章
- 台式计算机卡拉ok点歌系统,如何用现有的台式电脑改造歌厅点歌系统
- ad域推送软件_ManageEngine ADManager Plus(AD域管理工具) V7.0.1 官方中文版
- java web 和js区别_jsp和javascript之间有什么区别?
- 机器学习——神经网络(四):BP神经网络
- php滑动解锁验证码,javascript实现支付宝滑块验证码效果
- 【转载】「微信小程序」有哪些冲击与机会?
- 用c语言编程线性代数第六版答案,浅析用c语言编程求解线性代数中行列式值
- php手册 mac版,PHP中文手册for mac-PHP中文手册Mac版下载 V1.0.2-PC6苹果网
- idea中如何生成jar文件
- 安防系统管理服务器,安防弱电系统设计常用十个行业方案(含拓扑图)