首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Quartz 2.x 入門教程:Maven 依賴、Job/Trigger/Scheduler 核心 API、SimpleTrigger 範例

     編輯:Java 綜合教學

Quartz 2.x 定時任務入門教程

Quartz 是功能強大的 Java 定時排程框架,支援叢集、持久化、Cron 表達式。

一、Maven 依賴

<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz</artifactId>
  <version>2.2.3</version>
</dependency>
<!-- slf4j + log4j 由 quartz 传递依赖 -->

二、核心概念

  • Job:實作 org.quartz.Job 介面,execute() 為執行邏輯
  • JobDetail:Job 的元資料(名稱、群組、持久化資料)
  • Trigger:觸發條件(SimpleTrigger、CronTrigger)
  • Scheduler:調度器,管理 Job 與 Trigger 的綁定與生命週期

三、定義 Job

public class MyJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("定時任務執行:" + new Date());
        // 業務邏輯...
    }
}

四、啟動調度器

public class QuartzDemo {
    public static void main(String[] args) throws SchedulerException {
        // 1. 建立 SchedulerFactory
        SchedulerFactory sf = new StdSchedulerFactory();
        Scheduler scheduler = sf.getScheduler();

        // 2. 定義 JobDetail
        JobDetail job = JobBuilder.newJob(MyJob.class)
                .withIdentity("myJob", "group1")
                .build();

        // 3. 定義 Trigger:立即啟動,每 40 秒執行一次,共 10 次
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "group1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(40)
                        .withRepeatCount(10))
                .build();

        // 4. 註冊並啟動
        scheduler.scheduleJob(job, trigger);
        scheduler.start();

        // 測試:運行一段時間後關閉
        Thread.sleep(60_000);
        scheduler.shutdown(true);
    }
}

五、關鍵 API 說明

Builder用途
JobBuilder構建 JobDetail,指定實作類、身份
TriggerBuilder構建 Trigger,指定啟動時間、排程策略
SimpleScheduleBuilder簡單間隔排程(固定頻率/次數)
CronScheduleBuilderCron 表達式排程(如 "0 0/5 * * * ?")

六、持久化與叢集(進階預告)

  • 配置 JobStoreTX + 資料庫表(quartz 官網提供建表 SQL)
  • 叢集模式:org.quartz.jobStore.isClustered = true
  • Spring 整合:SchedulerFactoryBean
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved