您的位置:首页 > 编程语言 > Java开发

spring学习系列 -- 定时器一TimerTask

2015-07-10 14:31 453 查看


spring学习系列 -- 定时器一TimerTask

继承TimerTask,然后创建ScheduledTimerTask设置相关属性,最后吧ScheduledTimerTask添加到TimerFactoryBean中的list中完成配置。

<!-- ScheduledTimerTask设置定时器属性 : period=定时器周期;delay=延迟多久启动

86400000代表24个小时;timerTask=执行定时任务的类对象 --

spring定时器一般有两种

TimerTask、Quartz。本节只讲TimerTask

需要的包

aopalliance-1.0.jar

commons-logging-1.1.1.jar

spring-aop-3.0.6.RELEASE.jar

spring-asm-3.0.6.RELEASE.jar

spring-beans-3.0.6.RELEASE.jar

spring-context-3.0.6.RELEASE.jar

spring-core-3.0.6.RELEASE.jar

spring-expression-3.0.6.RELEASE.jar

TimerTask实例:同时启动2个定时器,执行任务

定时执行任务的类继承TimerTask:

Java代码


public class EmailReportTask extends TimerTask{

@Override

public void run() {

System.out.println(" EmailReportTask Run... ");

}

}

public class PageReportTask extends TimerTask{

@Override

public void run() {

System.out.println("PageReportTask Run...");

}

}

spring的配置文件:

Xml代码


<!-- Bean -->

<bean id="emailReportTask" class="com.hry.spring.timertask.EmailReportTask" />

<bean id="pageReportTask" class="com.hry.spring.timertask.PageReportTask" />

<!-- ScheduledTimerTask设置定时器属性 : period=定时器周期;delay=延迟多久启动

86400000代表24个小时;timerTask=执行定时任务的类对象 -->

<bean id="emailReportScheduleReportTask"

class="org.springframework.scheduling.timer.ScheduledTimerTask">

<property name="timerTask" ref="emailReportTask" />

<property name="period" value="2000" />

<property name="delay" value="1000" />

</bean>

<bean id="pageReportScheduleReportTask"

class="org.springframework.scheduling.timer.ScheduledTimerTask">

<property name="timerTask" ref="pageReportTask" />

<property name="period" value="2000" />

</bean>

<!-- Spring的TimerFactoryBean负责启动定时任务;

scheduledTimerTasks = 需要启动的定时器任务的列表-->

<bean class="org.springframework.scheduling.timer.TimerFactoryBean">

<property name="scheduledTimerTasks">

<list>

<ref bean="emailReportScheduleReportTask"/>

<ref bean="pageReportScheduleReportTask"/>

</list>

</property>

</bean>

测试代码:

Java代码


public class TestBaseService {

protected ApplicationContext ctx = new ClassPathXmlApplicationContext(

new String[]{

"classpath:resource/spring.xml"

}

);

@Test

public void timer(){

try{

// 这个是主线程,如果结束了,则定时器也会结束,所有设置时间要长

Thread.sleep(36 * 1000);

}catch(Exception e){

e.printStackTrace();

}

}

}

参考文献:

spring 定时器如何配置
Spring中Quartz的配置
spring定时任务之quartz
Spring定时器的两种实现方式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: