qingfeng2556的博客

qingfeng2556的博客

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

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

继承TimerTask,然后创建ScheduledTimerTask设置相关属性,最后吧ScheduledTimerTask添加到TimerFactoryBean中的list中完成配置。
  1. <!-- ScheduledTimerTask设置定时器属性 : period=定时器周期;delay=延迟多久启动   
  2.      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代码  收藏代码
  1. public class EmailReportTask extends TimerTask{     
  2.     @Override     
  3.     public void run() {     
  4.         System.out.println(" EmailReportTask Run... ");  
  5.     }       
  6. }   
  7.   
  8. public class PageReportTask extends TimerTask{     
  9.     @Override     
  10.     public void run() {     
  11.         System.out.println("PageReportTask Run...");  
  12.     }       
  13. }     

 

spring的配置文件:

Xml代码  收藏代码
  1.     <!--  Bean  -->   
  2. <bean id="emailReportTask" class="com.hry.spring.timertask.EmailReportTask" />  
  3. <bean id="pageReportTask" class="com.hry.spring.timertask.PageReportTask" />  
  4.   
  5. <!-- ScheduledTimerTask设置定时器属性 : period=定时器周期;delay=延迟多久启动   
  6.      86400000代表24个小时;timerTask=执行定时任务的类对象  -->   
  7. <bean id="emailReportScheduleReportTask"   
  8.     class="org.springframework.scheduling.timer.ScheduledTimerTask">     
  9.     <property name="timerTask" ref="emailReportTask" />     
  10.     <property name="period" value="2000" />     
  11.     <property name="delay" value="1000" />     
  12. </bean>   
  13. <bean id="pageReportScheduleReportTask"   
  14.     class="org.springframework.scheduling.timer.ScheduledTimerTask">     
  15.     <property name="timerTask" ref="pageReportTask" />     
  16.     <property name="period" value="2000" />      
  17. </bean>   
  18.   
  19.     <!-- Spring的TimerFactoryBean负责启动定时任务;   
  20.         scheduledTimerTasks = 需要启动的定时器任务的列表-->  
  21.     <bean class="org.springframework.scheduling.timer.TimerFactoryBean">     
  22.     <property name="scheduledTimerTasks">     
  23.         <list>  
  24.             <ref bean="emailReportScheduleReportTask"/>  
  25.             <ref bean="pageReportScheduleReportTask"/>  
  26.         </list>    
  27.     </property>     
  28. </bean>   
 

测试代码:

Java代码  收藏代码
  1. public class TestBaseService {  
  2.     protected ApplicationContext ctx = new ClassPathXmlApplicationContext(  
  3.             new String[]{  
  4.                     "classpath:resource/spring.xml"  
  5.             }  
  6.     );  
  7.   
  8.     @Test  
  9.     public void timer(){  
  10.         try{  
  11.             // 这个是主线程,如果结束了,则定时器也会结束,所有设置时间要长  
  12.             Thread.sleep(36 * 1000);  
  13.         }catch(Exception e){  
  14.             e.printStackTrace();  
  15.         }  
  16.    
  17.     }  
  18. }  
 

 

参考文献:

阅读更多
个人分类: spring
上一篇Eclipse设置、调优、使用
下一篇Spring中Quartz的配置
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭