" />

国产美女一级毛片精品久久久|婷婷影院在线综合免费视频|最新国产午夜精品视频成人|久久精品九九无码免费

北大青鳥老師講解:Java:Web應用下實現(xiàn)定時任務的簡便方法

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-05-04 09:27:36

北大青鳥老師講解:Java:Web應用下實現(xiàn)定時任務的簡便方法

  在web方式下,如果我們要實現(xiàn)定期執(zhí)行某些任務的話,除了用quartz等第三方開源工具外,我們可以使用Timer和TimeTask來完成指定的定時任務:

  第一步:創(chuàng)建一個任務管理類,實現(xiàn)ServletContextListener 接口

以下是引用片段:
public class TaskManager implements ServletContextListener {
 /**
  * 每天的毫秒數(shù)
  */
 public static final long PERIOD_DAY = DateUtils.MILLIS_IN_DAY;
 /**
  * 一周內(nèi)的毫秒數(shù)
  */
 public static final long PERIOD_WEEK = PERIOD_DAY * 7;
 /**
  * 無延遲
  */
 public static final long NO_DELAY = 0;
 /**
  * 定時器
  */
 private Timer timer;
 /**
  * 在Web應用啟動時初始化任務
  */
 public void contextInitialized(ServletContextEvent event) {
        //定義定時器
  timer = new Timer("數(shù)據(jù)庫表備份",true);
  //啟動備份任務,每月(4個星期)執(zhí)行一次
  timer.schedule(new BackUpTableTask(),NO_DELAY, PERIOD_WEEK * 4);
//  timer.schedule(new BackUpTableTask(),NO_DELAY, 30000);
 }
 /**
  * 在Web應用結(jié)束時停止任務
  */
 public void contextDestroyed(ServletContextEvent event) {
  timer.cancel(); // 定時器銷毀
 }
}

第二步:創(chuàng)建一個時間任務類

 

以下是引用片段:
public class BackUpTableTask extends TimerTask {
 private static Log log = LogFactory.getLog(BackUpTableTask.class);
 private static boolean isRunning = false;
 public void run() {
  if (!isRunning) {
   isRunning = true;
   log.debug("開始執(zhí)行任務..."); //開始任務
   //working  add what you want to do
   log.debug("執(zhí)行任務完成..."); //任務完成
   isRunning = false;
  } else {
   log.debug("上一次任務執(zhí)行還未結(jié)束..."); //上一次任務執(zhí)行還未結(jié)束
  }
 }
}

  第三步:在web中添加一個監(jiān)聽器

以下是引用片段:
 <listener>
  <listener-class>***.TaskManager</listener-class>
  <description>要定期執(zhí)行的任務</description>
 </listener>

  那么在web服務器啟動的時候,任務也被啟動,并且會周期性的執(zhí)行

上一篇:用Java實現(xiàn)斷點續(xù)傳(HTTP)二
下一篇:北大青鳥老師講解:Java基礎:JVM(Java 虛擬機)的詳細講解

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學校地址: 長沙市天心區(qū)團結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權所有

湘ICP備14017520號-3

關注我們
在線咨詢
嘿,我來幫您!