spring整合timerTask的配置1

本文介绍如何使用Spring配置定时器,并解决守护线程及多任务并存的问题。通过配置XML文件,实现了任务的延迟启动和周期执行,同时确保了服务器关闭时定时任务能够一并结束。

整合spring配置一个定时器。Java的TimerTask方式 网上的例子都没有考虑守护线程问题,两个任务并存问题。 在此解决了。 
解决了守护线程问题(服务器结束线程跟着结束),多个任务并存问题 步骤: 
新建一个定时器的配置schedulingContext-timer.xml  

<!-这个bean是你的类,id随便起 --> 

<bean id="todocall" class="com.forlink.hrdcx.adminWeb.shortmessagemanage.AutoSendSystem"> 
</bean>     

<bean id="repeatingTrigger" class="org.springframework.scheduling.timer.ScheduledTimerTask">        

 <!--启动10秒后执行 -->         

<property name="delay">             

    <value>10000</value>         

</property> 
        <!--每隔20秒执行一次 -->         

<property name="period">             

      <value>20000</value>         

</property> 
        <!--注入要监控的javaBean -->         

<property name="timerTask">             

      <ref bean="todocall" />        

 </property> 
<!--设置fixedRate(这个可以不配置,这个意思是,一段时间内这个任务没执行完,就会缩短下次执行的时间) --> 
  <property name="fixedRate">             

      <value>true</value>         

</property>     

</bean> 
<!--下面这个bean相当于java中的Timer --> 

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

<!--这个属性需要注意一下。这是守护线程的设置,TRUE的话就是这个是守护线程,随着服务器的关闭,线程也结束。如果没有这个属性,默认是非守护的。及时服务器关了,线程依旧运行。可能导致服务器关不掉 -->    

<property name="daemon">         

      <value>true</value>        

 </property> 
        <property name="scheduledTimerTasks">             

<list> 
<!--最好一个timer控制一个timerTask,如果一个控制多个的话,可能会出问题。第二个启动后可能第一个任务会失效 -->
                <ref bean="repeatingTrigger" />             

</list>         

</property> 
</bean>   
如果有多个定时任务,最好配置多个TimerFactoryBean 一个任务对应一个。  
在Web.xml文件中添加如下。也可以用自启动的servlet实现。这里只要能读取定时器配置就行。 
<context-param> 
<param-name>contextConfigLocation</param-name> 
<param-value>/WEB-INF/schedulingContext-timer.xml</param-value> </context-param> <listener>   
<listener-class>   
 org.springframework.web.context.ContextLoaderListener    </listener-class>   </listener>   
Java中这样写 
public class AutoSendSystem extends TimerTask   
 然后实现run方法就行了,在run方法中写你的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值