任务调度的再探索-在spring中使用TimerTask

     刚才在java分类中写过一篇JDK中的Timer和TimerTask实现任务调度的文章,在《spring2.0宝典》中提到在Spring中用Timer实现任务调度,省去了调度任务类的编写,而将任务调度配置在spring的配置文件中,实现类为org.springframework.scheduling.timer.ScheduledTimerTask。

    经过spring的包装后,不但省去了任务调度类的编写,而且采用配置方式,修改方便。So good~

    以下的例子很简单,只是实现定时将nameList中的名字打出来,具体采用时可根据业务修改,在此只做使用掩饰之用。

    一. Timer任务类代码如下:

  

import  java.util. * ;

public   class  CheckNames  extends  TimerTask
{
    
private List nameList;
  
    
public void setNameList(List nameList)
    
{
        
this.nameList = nameList;
    }

  
    
public void run()
    
{
        
for (Iterator it = nameList.iterator(); it.hasNext(); )
        
{
            System.out.println(it.next());
        }
      
    }

}

   

    二.  spring的完整配置文件如下:

  

<? xml version="1.0" encoding="gb2312" ?>

<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
    "http://www.springframework.org/dtd/spring-beans.dtd"
>

< beans >
    
<!--   定义一个任务bean,它必须继承TimerTask -->
    
< bean  id ="checkName"  class ="CheckNames" >
      
< property  name ="nameList" >
        
< list >
          
< value > Amigo Xie </ value >
          
< value > Xie Xing xing </ value >
        
</ list >
      
</ property >
    
</ bean >

    
<!--  将目标任务包装成可调度任务 -->
    
< bean  id ="scheduledTask"  class ="org.springframework.scheduling.timer.ScheduledTimerTask" >
        
<!--  配置任务调度任务的延迟时间 -->
        
< property  name ="delay" >
            
< value > 1000 </ value >
        
</ property >
        
<!--  配置两次任务调度之间的时间间隔 -->
        
< property  name ="period" >
            
< value > 2000 </ value >
        
</ property >
        
<!--  确定任务调度的目标任务 -->
        
< property  name ="timerTask" >
            
< ref  local ="checkName" />
        
</ property >
    
</ bean >

    
< bean  id ="timerFactory"  class ="org.springframework.scheduling.timer.TimerFactoryBean" >
        
< property  name ="scheduledTimerTasks" >
            
<!--  下面用于配置一系列的任务调度 -->
            
< list >
                
< ref  local ="scheduledTask" />
            
</ list >
        
</ property >
        
<!--  设置该任务调度器是否为后台线程,设置为false表示不是后台线程 -->
        
< property  name ="daemon" >
            
< value > false </ value >
        
</ property >
    
</ bean >

</ beans >

    三. 测试类

    可写一个测试类,在该测试类的main方法中加入如下语句;

    ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");

    通过该语句创建了ApplicationContext 实例,但程序不会中止,因为启动了任务调度

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值