Java Quartz 任务调度框架使用

Java Quartz 是一个功能强大的开源作业调度框架,广泛应用于 Java 应用程序中,用于管理和执行定时任务。

以下是关于 Quartz 的核心概念和用法的简要介绍:

1. ​Quartz 的核心组件
​  Scheduler:调度器是 Quartz 的核心,负责管理任务的执行。通过 SchedulerFactory 创建并启动调度器。
  ​Job:任务的具体实现,需要实现 org.quartz.Job 接口,并重写 execute 方法。
  ​JobDetail:任务的详细信息,包括任务类、任务名和组名等。
​  Trigger:触发器,定义任务的执行规则,例如时间间隔或 Cron 表达式。
​  JobStore:任务的存储方式,支持内存存储(RAMJobStore)和数据库存储(JDBCJobStore)

 

2. ​基本用法

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzDemo {
    public static void main(String[] args) throws SchedulerException {
        // 1. 创建任务
        JobDetail job = JobBuilder.newJob(MyJob.class)
                .withIdentity("myJob", "group1")
                .build();

        // 2. 创建触发器,每5秒触发一次
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("myTrigger", "group1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(5)
                        .repeatForever())
                .build();

        // 3. 创建调度器并启动
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);
    }
}

class MyJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("任务执行时间:" + System.currentTimeMillis());
    }
}

 

3. ​进阶功能
​  Cron 表达式:支持复杂的调度规则,例如每天 8 点执行:

Trigger trigger = TriggerBuilder.newTrigger()
        .withSchedule(CronScheduleBuilder.cronSchedule("0 0 8 * * ?"))
        .build();

集群支持:通过配置 org.quartz.jobStore.isClustered 为 true,实现多节点任务调度。
​持久化:使用 JDBCJobStore 将任务信息存储到数据库中,确保任务不会丢失。

 

4. ​常见问题
​时间不准:确保系统时间同步,建议使用 NTP 服务。
​任务阻塞:使用 @DisallowConcurrentExecution 注解避免并发问题。

 

5. ​Cron 表达式生成工具:http://www.cronmaker.com/

 

posted @ 2025-03-15 21:04  IT王师傅  阅读(629)  评论(0)    收藏  举报