有关定时的多种方式
2015-07-23 17:10
295 查看
一:前言
很久没有记载东西了,毕业回来之后一个多月都没怎么记载了,今天其实是很巧合的,本来很早以前写的一个定时器,在测试服务器上经常无缘无故的挂掉,进而使得整个服务器都挂掉了,上次弄的客户很不满意,老大就直接把我用quartz的定时器更改了,但是了我当时没怎么仔细看,然后今天我一个同学问我定时器怎么设置90分钟的,我说不行,然后我就想到我们的定时器改了,我就看了看代码,发现已经没有用我的quartz了,我就瞅了下代码。。。然后就。。。
二:定时的方式
(1)、quartz的定时方式,在我自己的博客里面记载的有,这种方式是需要数据库的。
(2)、spring task的方式,这个说白了就是交个spring来管理了,所以是不需要数据库的,配置的话差不多,都是大同小异。
(3)、Timer,这种方式我没有用过,但是我查找了一下,发现是通过监听器和定时器定时来完成某个任务的(http://www.blogjava.net/fastunit/archive/2008/02/15/180116.html)
三:应用
在使用(1)和(2)中有都有共同的区分
A:org.springframework.scheduling.quartz.SimpleTriggerBean 这是代表每格指定的时间则触发一次。
B:org.springframework.scheduling.quartz.CronTriggerBean 这是代表每到指定时间触发一次,所以像是我们需要定时时间超过60分钟(比如想定时每90分钟执行一次的话就需要用A方式)
这篇文章记载的非常详细,觉得讲得不错,相当不错,可以借鉴下http://blog.csdn.net/wilsonke/article/details/26590379。
刚刚朋友又发现一种方式http://my.oschina.net/xldc/blog/297864
四:总结
最近转去做微信开发了,天天看了文档,微信文档最初看的挺迷迷糊糊的,分配的任务也是研究阿里云oss跨域上传文件下载文件,研究了好久好久,看文档都看了一个多星期,现在希望能把微信搞懂,多一个技能吧,咔咔咔咔咔咔咔。。。。
很久没有记载东西了,毕业回来之后一个多月都没怎么记载了,今天其实是很巧合的,本来很早以前写的一个定时器,在测试服务器上经常无缘无故的挂掉,进而使得整个服务器都挂掉了,上次弄的客户很不满意,老大就直接把我用quartz的定时器更改了,但是了我当时没怎么仔细看,然后今天我一个同学问我定时器怎么设置90分钟的,我说不行,然后我就想到我们的定时器改了,我就看了看代码,发现已经没有用我的quartz了,我就瞅了下代码。。。然后就。。。
二:定时的方式
(1)、quartz的定时方式,在我自己的博客里面记载的有,这种方式是需要数据库的。
(2)、spring task的方式,这个说白了就是交个spring来管理了,所以是不需要数据库的,配置的话差不多,都是大同小异。
(3)、Timer,这种方式我没有用过,但是我查找了一下,发现是通过监听器和定时器定时来完成某个任务的(http://www.blogjava.net/fastunit/archive/2008/02/15/180116.html)
三:应用
在使用(1)和(2)中有都有共同的区分
A:org.springframework.scheduling.quartz.SimpleTriggerBean 这是代表每格指定的时间则触发一次。
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="job1" /> <property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 --> <property name="repeatInterval" value="2000" /><!-- 每2秒调度一次 --> </bean>
B:org.springframework.scheduling.quartz.CronTriggerBean 这是代表每到指定时间触发一次,所以像是我们需要定时时间超过60分钟(比如想定时每90分钟执行一次的话就需要用A方式)
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="job1" /> <!—每天12:00运行一次 --> <property name="cronExpression" value="0 0 12 * * ?" /> </bean> 字段名(项) 必须 值范围 特殊字符 秒 是 0-59 , - * / 分 是 0-59 , - * / 时 是 0-23 , - * / 月的某天 是 1-31 , - * ? / L W 月 是 1-12 or JAN-DEC , - * / 星期的某天 是 1-7 or SUN-SAT , - * ? / L # 年 否 empty, 1970-2099 , - * /
这篇文章记载的非常详细,觉得讲得不错,相当不错,可以借鉴下http://blog.csdn.net/wilsonke/article/details/26590379。
刚刚朋友又发现一种方式http://my.oschina.net/xldc/blog/297864
/** * 定时卡点计算。每天凌晨 02:00 执行一次 */ @Scheduled(cron = "0 0 2 * * *") public void autoCardCalculate() { System.out.println("定时卡点计算... " + new Date()); } /** * 心跳更新。启动时执行一次,之后每隔1分钟执行一次 */ @Scheduled(fixedRate = 1000*60*1) public void heartbeat() { System.out.println("心跳更新... " + new Date()); } /** * 卡点持久化。启动时执行一次,之后每隔2分钟执行一次 */ @Scheduled(fixedRate = 1000*60*2) public void persistRecord() { System.out.println("卡点持久化... " + new Date()); }
四:总结
最近转去做微信开发了,天天看了文档,微信文档最初看的挺迷迷糊糊的,分配的任务也是研究阿里云oss跨域上传文件下载文件,研究了好久好久,看文档都看了一个多星期,现在希望能把微信搞懂,多一个技能吧,咔咔咔咔咔咔咔。。。。
相关文章推荐
- Inspector's Dilemma(欧拉通路)
- 使用insert 语句插入另一个表和几个传入数据时,写法:
- SHELL入门教程(5)-算术运算
- 【漏洞分析】CVE2012-0002漏洞分析过程详述
- 多记录,多思考,多总结
- 最大子序列和问题
- 关于球型Shader的写法
- PHP 中运用 elasticsearch
- JS: Cannot read property 'innerHTML' of undefined错误
- JavaScript异常处理
- AIDL(不完整)
- 无聊至极——六月总结
- Dubbo服务端/客户端demo
- Maven构建Web应用
- jQuery静态方法parseJSON方法使用和源码分析
- mysql启动不成功显示The server quit without updating PID file的解决方法
- Android 四大组件学习之ContentProvider二
- 泡泡龙——代码结构规范
- node.js 事件
- (组图)Win10 RTM正式版Build 10240更新哪些内容?激活有变