spring学习系列 -- 定时器一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:

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的配置文件:

  	<!--  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> 
 

测试代码:

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();
		}
 
	}
}
 

 

参考文献:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值