有关定时的多种方式

一:前言

很久没有记载东西了,毕业回来之后一个多月都没怎么记载了,今天其实是很巧合的,本来很早以前写的一个定时器,在测试服务器上经常无缘无故的挂掉,进而使得整个服务器都挂掉了,上次弄的客户很不满意,老大就直接把我用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跨域上传文件下载文件,研究了好久好久,看文档都看了一个多星期,现在希望能把微信搞懂,多一个技能吧,咔咔咔咔咔咔咔。。。。

时间: 2024-11-13 07:51:31

有关定时的多种方式的相关文章

myeclipse安装svn插件的多种方式

开发者服务评测征文 十万现金悬赏大神 方法一:在线安装 1.打开HELP->MyEclipse Configuration Center.切换到SoftWare标签页. 2.点击Add Site 打开对话框,在对话框Name输入Svn,URL中输入:http://subclipse.tigris.org/update_1.6.x3.在左边栏中找到Personal Site中找到SVN展开.将Core SVNKit Library和Optional JNALibrary添加(右键Add to Pr

android 设置字体颜色、EditText自动输入转换成大写字母的多种方式

在TextView上面设置某一个字的字体颜色为指定颜色时,可以通过java类SpannableString类和Html语言来实现. (一)SpannableString类方式 private void setText(TextView t){ String text = t.getText().toString().trim(); SpannableString span = new SpannableString(text); span.setSpan(new ForegroundColorS

从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)

前言 由于一个同学问到我如何按照一个流程走好之后回到首页,我以前看到过4个解决方案,后来发现有做个记录和总结的必要,就写了这篇博文.(之前看小强也写过一篇,这里通过自身的分析完整的总结一下以下6种方案,并加上一个DEMO便于大家了解大体流程) 在android的用户交互中,按钮触发的意图(Intent)跳转会为你重新打开新的一个界面活动(Activity),对于之前的界面根据需求进行摧毁(Finish())或则保留. 如果一个交互流程中,是从A开始,按照A - B - C - D - A这样的顺

shell实战:多种方式实现获取列内容

自己不是专业的linux,平时工作中也不用linux编程,自学一些linux shell编程,忘了学,学了忘,效率不高.今天权当复习吧. 想想这样一个情景吧,获取某一行的部分列值. 考虑这样的输入:"root:x:0:0:root:/root:/bin/bash",现在我们获取用户及shell信息.自己暂时想到的5种实现方式. #!/bin/bash ############################################## #第二种实现 普通循环 #########

单片机定时/计数工作方式

单片机中的定时/计数器都能有多种用途,要通过定时/计数器的方式控制字来设置,需要的用途. 在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON.,TMOD和TCON是名称,我们在写程序时就能直接用这个名称来指定它们,当然也能直接用它们的地址89H和88H来指定它们(其实用名称也就是直接用地址,汇编软件帮你翻译一下而已).     TMOD被分成两部份,每部份4位.分别用于控制T1和T0.TCON也被分成两部份,高4位用于定时/计数器,低4位则用于中断(TF1.0在这).TR0

异步上传文件多种方式归纳

最近在做异步上传文件的工作,用到了一些库,这里归纳下,暂且不考虑异常处理,仅作为demo. 1.不用任何插件,利用iframe,将form的taget设为iframe的name,注意设为iframe的id是没用的,跟网上很多说的不太一致 iframe_upload.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm

JavaScript中判断为整数的多种方式

原文:JavaScript中判断为整数的多种方式 之前记录过JavaScript中判断为数字类型的多种方式,这篇看看如何判断为整数类型(Integer). JavaScript中不区分整数和浮点数,所有数字内部都采用64位浮点格式表示.但实际操作中比如数组索引.位操作则是基于32位整数. 方式一.使用取余运算符判断 任何整数都会被1整除,即余数是0.利用这个规则来判断是否是整数. function isInteger(obj) { return obj%1 === 0 } isInteger(3

爱,有很多种方式表达

爱,有很多种方式表达,或真或假,但融于情,浓过情,没有选择,因为爱:没有后悔,因为爱.    有个女人,让我爱她二十多年了,从孩子堤时代开始,或者是一见衷情,但又是一厢情怨,曾经为她的一眸一颦而欢喜,也为她的一怒一哀而伤心.    有首诗说得很赤白:我是曾经多么多么的爱着她.    现实却是:我一无所有.    有首歌唱道:我就跟你一起走,爱我一无所有.因为你是我的全部.    而孩堤的厢情最终被现实灰灰烟灭,我知道,我在乎你,但我有时候却喜欢身边的女人,有道是男人好色.    最终你披着别人的

jQuery绑定事件-多种方式实现

jQuery绑定事件-多种方式实现: <html> <head> <meta charset="utf-8" /> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script><!--百度CDN--> </head> <body> <input type="text"/&