Posted on 2009-12-13 22:41
Gavin.lee 閱讀(1061)
評論(0) 編輯 收藏 所屬分類:
SSH2 --Spring
在web方式下,如果我們要實現定期執行某些任務的話,除了用quartz等第三方開源工具外,我們可以使用Timer和TimeTask來完成指定的定時任務。專業的開源工具可參考Quartz:http://www.opensymphony.com/quartz/
第一步:創建一個任務具體操作類,實現ServletContextListener 接口 MyListener.java
package yixun.wap.tools;

import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyListener implements ServletContextListener
{
private Timer timer = null;

public void contextInitialized(ServletContextEvent event)
{
timer = new Timer(true);//true 指定為后臺線程
// 設置任務計劃,啟動和間隔時間
timer.schedule(new MyTask(), 0, 86400000);
//可寫多個定時任務
}


public void contextDestroyed(ServletContextEvent event)
{
timer.cancel();
}

}
還有好幾種任務調度
timer.schedule(task, time);
// time為Date類型:在指定時間執行一次。
timer.schedule(task, firstTime, period);
// firstTime為Date類型,period為long
// 從firstTime時刻開始,每隔period毫秒執行一次。
timer.schedule(task, delay)
// delay 為long類型:從現在起過delay毫秒執行一次
timer.schedule(task, delay, period)
// delay為long,period為long:從現在起過delay毫秒以后,每隔period
// 毫秒執行一次。
第二步:創建一個時間任務類 MyTask.java
package yixun.wap.tools;

import java.util.TimerTask;


public class MyTask extends TimerTask
{


public void run()
{
// System.out.println("call at " + (new Date()));
// TODO 此處添加具體任務代碼
}

}
第三步:在web.xml中添加一個監聽器
<listener>

<listener-class>
yixun.wap.tools.MyListener
</listener-class>
<description>要定期執行的任務</description>
</listener>

通過配置監聽器,那么在web服務器啟動的時候,任務也被啟動,并且會周期性的執行
參考文章:http://www.tkk7.com/fastunit/archive/2008/02/15/180116.html