posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            在web方式下,如果我們要實(shí)現(xiàn)定期執(zhí)行某些任務(wù)的話(huà),除了用quartz等第三方開(kāi)源工具外,我們可以使用Timer和TimeTask來(lái)完成指定的定時(shí)任務(wù)。專(zhuān)業(yè)的開(kāi)源工具可參考Quartz:http://www.opensymphony.com/quartz/

          第一步:創(chuàng)建一個(gè)任務(wù)具體操作類(lèi),實(shí)現(xiàn)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 指定為后臺(tái)線(xiàn)程
                  
          // 設(shè)置任務(wù)計(jì)劃,啟動(dòng)和間隔時(shí)間
                  timer.schedule(new MyTask(), 086400000);
          //可寫(xiě)多個(gè)定時(shí)任務(wù)
              }


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


          }
          還有好幾種任務(wù)調(diào)度
          timer.schedule(task, time);   
          // time為Date類(lèi)型:在指定時(shí)間執(zhí)行一次。   
           
          timer.schedule(task, firstTime, period);   
          // firstTime為Date類(lèi)型,period為long   
          // 從firstTime時(shí)刻開(kāi)始,每隔period毫秒執(zhí)行一次。   
           
          timer.schedule(task, delay)   
          // delay 為long類(lèi)型:從現(xiàn)在起過(guò)delay毫秒執(zhí)行一次   
           
          timer.schedule(task, delay, period)   
          // delay為long,period為long:從現(xiàn)在起過(guò)delay毫秒以后,每隔period   
          // 毫秒執(zhí)行一次。


          第二步:創(chuàng)建一個(gè)時(shí)間任務(wù)類(lèi) 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 此處添加具體任務(wù)代碼
            }


          }

          第三步:在web.xml中添加一個(gè)監(jiān)聽(tīng)器

          <listener>

              
          <listener-class>
                  yixun.wap.tools.MyListener
              
          </listener-class>
              
          <description>要定期執(zhí)行的任務(wù)</description>
          </listener> 


          通過(guò)配置監(jiān)聽(tīng)器,那么在web服務(wù)器啟動(dòng)的時(shí)候,任務(wù)也被啟動(dòng),并且會(huì)周期性的執(zhí)行
          參考文章:http://www.aygfsteel.com/fastunit/archive/2008/02/15/180116.html

          主站蜘蛛池模板: 陵川县| 望江县| 图们市| 庆元县| 安福县| 盐池县| 连平县| 松原市| 美姑县| 金山区| 莎车县| 华安县| 建水县| 农安县| 唐河县| 陕西省| 尼木县| 温宿县| 定边县| 奎屯市| 西城区| 贡嘎县| 望城县| 霍山县| 青冈县| 瑞昌市| 天台县| 共和县| 来宾市| 安泽县| 墨玉县| 乐都县| 龙海市| 江津市| 托克托县| 阿拉尔市| 六安市| 龙陵县| 广灵县| 清流县| 井冈山市|