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


任務類

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
      */

        scheduler.shutdown(true);

 } public static void main(String[] args) throws Exception { SimpleExample example = new SimpleExample(); example.run(); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM