熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Java調度任務和Spring Quartz

2013-11-23 20:30:35  來源: Java開源技術 

  並非所有的系統中發生的事情都是由用戶主動引發的系統有時候需要根據一定的規則觸發相應的時間其實在jdkjava sdk就通過javautilTimer提供相應的功能一個簡單的例子說明如何使用很簡單

  第一步我們需要建立一項任務我們的任務需要繼承javautilTimerTask

  
package comdanan;

import javatextSimpleDateFormat;
import javautilDate;
import javautilTimerTask;

public class TimeTask extends TimerTask {

    @Override
    public void run() {
        //沒有秒鐘報告現在的時刻任務

        SimpleDateFormat sdf=new SimpleDateFormat(yyyy年MM月 HH:mm:ss);
        Systemoutprintln(sdfformat(new Date()));
    }

}

  我們需要啟動我們的任


package comdanan;

import javautilTimer;


/**
 * @author Administrator
 *
 */
public class Hello {

 
 public static void main(String[] args) throws Exception {
       Timer timer=new Timer();
       timerschedule(new TimeTask() );//注冊此任務在第一次運行後的秒鐘時間執行以後每隔秒鐘時間執行一次

 
 }

}

  schedule(TimerTask task long delay long period)中task指定了需要執行的任務delay指定在第一次運行任務後的多少毫秒執行此任務period參數指定在以後的多少毫秒執行一次任務

  我們可以看到很遺憾的是Timer只可以指定多久執行一次並不能指定在具體那個時間點執行這項任務比如說我們需要每天午夜執行某一任務而正是QuartZ調度器起作用的時候了關於QuartZ的更多信息可以訪問下面讓我們來看QuartZ是怎麼工作的吧!

  創建一項任務

  

  public class Shedule {
 //this class do daily task for message awoke and cycle task

    public Shedule() {
        
    }
    public void say(){
        //cycleTask();

        messageAwoke();
        
    }
}


  
package comdananaction;

import orgquartzJobExecutionContext;
import orgquartzJobExecutionException;
import orgspringframeworkschedulingquartzQuartzJobBean;

public class DailySay extends QuartzJobBean {
    private Shedule sh ;

    @Override
    protected void executeInternal(JobExecutionContext arg)
            throws JobExecutionException {
        shsay();
    }

    public Shedule getSh() {
        return sh;
    }

    public void setSh(Shedule sh) {
        thissh = sh;
    }

}

  我們使用Spring的注入容器注入Shedule

  調度cron任務

  在Spring配置文件中

  

      <bean id=task class=comdananactionShedule>
    <property name=hibernateSession ref=hibernateSession></property>
    </bean>
    <bean id=job class=orgspringframeworkschedulingquartzJobDetailBean>
    <property name=jobClass value=comdananactionDailySay></property>
    <property name=jobDataAsMap>
    <map>
    <entry key=sh valueref=task></entry>
    </map>
    </property>
    </bean>
    <bean id=report class=orgspringframeworkschedulingquartzCronTriggerBean>
    <property name=jobDetail ref=job></property>
    <property name=cronExpression value= * * ?></property>
    </bean>

  啟動任務

  

  <bean id=schedulerFactoryBean class=orgspringframeworkschedulingquartzSchedulerFactoryBean>
    <property name=triggers>
    <list>
    <ref bean=report/>
    </list>
    </property>
    </bean>

  這樣你將會完成每天凌晨鐘啟動Shedule 任務的功能


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28595.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.