quartz2.3.0(一)您的第一個Quartz程序

任務類java

package org.quartz.examples.example1;

import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
  * 定時任務執行Job類,需繼承Job父類
 */
public class HelloJob implements Job {

    private static Logger LOG = LoggerFactory.getLogger(HelloJob.class);

    //必需要有public修飾的無參構造函數
    public HelloJob() {
    }

    //一個簡單任務,執行的時候打印一句「Hello World! - 」
    public void execute(JobExecutionContext context) throws JobExecutionException {
        LOG.info("Hello World! - " + new Date());
    }

}

 

調度管理類函數

package org.quartz.examples.example1;

import static org.quartz.DateBuilder.evenMinuteDate;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Date;

/**
 * 這個示例將演示如何啓動和關閉Quartz調度器,以及如何調度要在Quartz中運行的做業。
 */
public class SimpleExample {
    Logger LOG = LoggerFactory.getLogger(SimpleExample.class);

    public void run() throws Exception {

        // 初始化一個調度工廠,並實例化一個調度類
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        // 定義一個開始運行時間:下一分鐘
        Date runTime = evenMinuteDate(new Date());

        // 定義一個Job類,命名爲job1,並綁定到一個名爲group1的組中
        JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();
        // 實例化一個觸發器,命名爲trigger1,並綁定到一個名爲group1的組中,Job類運行開始時間爲runTime(下一分鐘)
        Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();

        // 告訴quartz使用咱們的觸發器來調度任務
        scheduler.scheduleJob(job, trigger);
        LOG.info(job.getKey() + " will run at: " + runTime);

        // 啓動調度器(在調度器啓動以前,實際上什麼都不能運行)
        scheduler.start();

        // 等待的時間足夠長,使調度程序有機會運行完畢Job做業!
        try {
            Thread.sleep(65L * 1000L);
        } catch (Exception e) {
        }

      /**
      * 終止調度。
      * 可是若是當前仍然有任務正在運行中,則會等待該任務執行完畢再終止,期間debug信息會打印:
      * 21:48:54.965 [main] DEBUG org.quartz.simpl.SimpleThreadPool - Waiting for thread TestScheduler_Worker-1 to shut down
      */ui

        scheduler.shutdown(true);spa

 } public static void main(String[] args) throws Exception { SimpleExample example = new SimpleExample(); example.run(); } }
相關文章
相關標籤/搜索