关闭

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

393人阅读 评论(0) 收藏 举报
分类:

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. }  
 

 

参考文献:

0
0
查看评论

Spring TimerTask定时器的用法

Spring定时器TimerTask用法: 在tomcat服务启动,spring定时器容器加载时会执行定时器里的任务,可设置时间间隔和延迟执行时间,具体做法如下:   定时器java代码: package com.coalmine.desktop; import java.tex...
  • zhujianpengzha
  • zhujianpengzha
  • 2012-11-02 13:15
  • 7313

TimerTask、Quartz、Spring-Task 详解

Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合 spring框架来介绍。 一.分类 从实现的技术上来分类,...
  • qq_31105311
  • qq_31105311
  • 2015-12-09 10:16
  • 879

Spring使用TimerTask配置调度事务

首先我们编写调度服务,继承java.util.TimerTask package TimerTest;import java.util.Date;import java.util.TimerTask;public class TimerSe...
  • daryl715
  • daryl715
  • 2007-06-05 23:19
  • 4539

定时器 Timer和TimerTask详解

如果要执行一些简单的定时器任务,无须做复杂的控制,也无须保存状态,那么可以考虑使用JDK 入门级的定期器Timer来执行重复任务。   一、原理   JDK中,定时器任务的执行需要两个基本的类:     java.util.Tim...
  • aXFD_YY
  • aXFD_YY
  • 2016-08-18 17:42
  • 362

Spring整合TimerTask实现定时任务调度

一. 前言 最近在公司的项目中用到了定时任务, 本篇博文将会对TimerTask定时任务进行总结, 其实TimerTask在实际项目中用的不多, 因为它不能再指定时间运行, 只能让程序按照某一个频度运行. 二. TimerTask JDK中Timer是一个定时器类, 它可以为指定的定时任...
  • zdp072
  • zdp072
  • 2014-06-21 23:04
  • 3224

SpringMVC中类继承TimerTask后无法对service注入问题

接到一个需求,大致是当启动服务器时加载数据表的数据,存到后台的static缓存中。 才开始在web.xml配置了 com.ewin.merTask 然后调用一个定时器,定时器中拿数据库中数据,但运行报错,空指针异常!也就是service根本就没有注入成功、 原因是:...
  • MckayRen
  • MckayRen
  • 2016-12-29 18:12
  • 1465

传统定时器技术 Timer and TimerTask

本文为张孝祥java并发课程的学习笔记。 java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。 一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类的方式创建。 我们看看看Timer...
  • dlf123321
  • dlf123321
  • 2015-01-15 15:29
  • 919

spring中集成TimerTask执行定时任务 中配置文件的配置

在spring的bean配置文件中配置,当系统加载该文件时,配置的定时器将自动启动,同时被spring管理。 Spring对Timer的支持的核心是由ScheduledTimerTask和TimerFactoryBean类组成的。 ScheduledTimerTask类是对TimerTask的...
  • wangyafengx
  • wangyafengx
  • 2015-06-12 18:25
  • 1252

Android 定时器TimerTask 简单使用

Android平台中需要反复按周期执行方法可以使用Java上自带的TimerTask类,TimerTask相对于Thread来说对于资源 消耗的更低,除了使用Android自带的AlarmManager使用Timer定时器是一种更好的解决方法。 我们需要引入 import java.util.Ti...
  • q610098308
  • q610098308
  • 2015-09-05 23:03
  • 2187

zookeeper学习系列(一)zookeeper简介

1 zookeeper作用。 一个消息进行网络传输,当网络发生故障时,发送方并不知道接收方是否收到消息。发送方唯一能做的就是再次进行连接,并且进行轮询来确定接收方是否已接收信息。zookeeper不能解决局部故障,但是提供了一些工具集,用来建立安全处理局部故障的分布式应用。 2 zookeeper基...
  • fanfan159357
  • fanfan159357
  • 2015-12-01 01:10
  • 297
    个人资料
    • 访问:292024次
    • 积分:3600
    • 等级:
    • 排名:第10825名
    • 原创:37篇
    • 转载:337篇
    • 译文:0篇
    • 评论:15条