定时任务汇总
Posted 心若不动,风又奈何;你若不伤,岁月无恙。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定时任务汇总相关的知识,希望对你有一定的参考价值。
一、前言
在工作中我们少不了会用到定时任务的功能,但是哪种方式简单易理解呢,可能大家就不是太清楚了,在下面介绍一下工作中常用到的几种定时任务的使用以及我的个人看法。
二、定时任务(大家都知道定时任务,我在这里就不做过多介绍了,直接上代码)
一、quartz
1) 配置文件:
1 <!-- 使用MethodInvokingJobDetailFactoryBean,任务类可以不实现Job接口,通过targetMethod指定调用方法--> 2 <!-- 定义目标bean和bean中的方法 --> 3 <bean id="SpringQtzJob" class="com.ncs.hj.SpringQtz"/> 4 <bean id="SpringQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 5 <property name="targetObject"> 6 <ref bean="SpringQtzJob"/> 7 </property> 8 <property name="targetMethod"> <!-- 要执行的方法名称 --> 9 <value>execute</value> 10 </property> 11 </bean> 12 13 <!-- ======================== 调度触发器 ======================== --> 14 <bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"> 15 <property name="jobDetail" ref="SpringQtzJobMethod"></property> 16 <property name="cronExpression" value="0/5 * * * * ?"></property> 17 </bean> 18 19 <!-- ======================== 调度工厂 ======================== --> 20 <bean id="SpringJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 21 <property name="triggers"> 22 <list> 23 <ref bean="CronTriggerBean"/> 24 </list> 25 </property> 26 </bean>
2)透过实例看原理
二、Spring自带的一个设定时间自动任务调度
1 <task:scheduled-tasks> 2 <task:scheduled ref="voiceFileClearJob" method="execute" initial-delay="5000" fixed-delay="3600000"/> 3 <task:scheduled ref="versionListenJob" method="execute" initial-delay="5000" fixed-delay="5000"/> 4 <task:scheduled ref="statJob" method="statLgj" cron="0 59 23 * * ?"/> 5 <task:scheduled ref="statJob" method="statBadNameAndQQ" cron="23 28 20 * * ?"/> 6 </task:scheduled-tasks>
第一个任务表示程序启动5s后调用voiceFileClearJob类中的execute方法,然后每隔一个小时再调用execute一次
第三个任务表示每天的23点59分调用statJob类中的statLgj方法
注意:在spring3.0.6时,如果在xml中加入default-lazy-init="true"后,只在xml中写定时时间还不起作用,还需要在方法上面用@Scheduled(cron = "0 0 2 * * *")
注解写定时时间才起作用,以方法上定义的为准,替换成Sping3.2.2之后,就可以直接在XML中配置,而不需要在方法上使用注解配置时间了。如果不想这样,需要在bean上加个注解@Lazy(value="false")
ref是工作类
method是工作类中要执行的方法
initial-delay是任务第一次被调用前的延时,单位毫秒
fixed-delay是上一个调用完成后再次调用的延时
fixed-rate是上一个调用开始后再次调用的延时(不用等待上一次调用完成)
cron是表达式,表示在什么时候进行任务调度。
三、总结
Spring内部有一个task是Spring自带的一个设定时间自动任务调度
task使用的时候很方便,但是他能做的东西不如quartz那么的多!
以上是关于定时任务汇总的主要内容,如果未能解决你的问题,请参考以下文章