在我们常用的项目中,会遇到一些需要定时触发的功能,这时我们认识到了定时器的作用。
- quartz定时器的在WEB应用中的简单使用
a. 创建定时器类
package com.hikvision.common.timetask; /** * 创建定时器,每天凌晨定时更新 顺序号 sequenNumber 为 0 * */ public class RefSeqNumTask { public void aaa() { // 调用需要定时处理的任务 } }
b. applicationContext.xml中配置定时器
<!-- 配置定时任务 quartz --> <bean id="refSeqNum" class="com.hikvision.common.timetask.RefSeqNumTask"></bean> <!-- 定义调用对象和调用对象的方法 --> <bean id="refreshSequenNumberSpring" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="refSeqNum"/><!-- 定时器类 --> </property> <property name="targetMethod"> <value>aaa</value><!-- 执行定时任务的方法 --> </property> </bean> <!-- 定义触发时间 --> <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="refreshSequenNumberSpring"/> </property> <!-- 每天0点执行一次 --> <property name="cronExpression"> <value>0 0 0 * * ?</value> <!-- 每天凌晨定时更新,具体的时间规则可查找相关资料--> </property> </bean> <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 --> <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="doTime"/> </list> </property> </bean>
2. java中TimeTask的使用
a. 创建定时器类
扫描二维码关注公众号,回复:
619272 查看本文章
第一个参数是要操作的方法,第二个参数是要设定延迟的时间,第三个参数是周期的设定, 每隔多长时间执行该操作。使用这几行代码之后,Timer本身会每隔5分钟调用一遍
server.checkNewMail()方法,不需要自己启动线程。Timer本身也是多线程同步的,多个线程可以共用一个Timer,不需要外部的同步代码。
private java.util.Timer timer;
timer = new Timer(true);
timer.schedule(
new java.util.TimerTask() , 0, 5*60*1000);
private java.util.Timer timer; timer = new Timer(true); timer.schedule( new java.util.TimerTask() 0, 5*60*1000);
b. 创建定时任务对象
class MyTask extends TimerTask { @Override public void run() { System.out.println("dddd"); } }