在 Quartz 中,你可以定义和调度多个 Job。每个 Job 都有对应的 JobDetail 和 Trigger。
1. 添加依赖
确保你的项目中包含 Quartz 的依赖。例如,如果你使用的是 Maven,可以在 pom.xml
中添加以下依赖:
<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.2</version>
</dependency>
2. 创建 Job 类
首先,编写两个实现 Job
接口的类;每个类包含要执行的任务。
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;public class JobOne implements Job {@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {System.out.println("Executing JobOne at " + System.currentTimeMillis());}
}public class JobTwo implements Job {@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {System.out.println("Executing JobTwo at " + System.currentTimeMillis());}
}
3. 配置调度器
创建一个调度器并配置两个 Job 及其各自的触发器。
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;public class QuartzScheduler {public static void main(String[] args) throws SchedulerException {// 创建调度器Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();// 定义第一个作业和触发器JobDetail jobOne = JobBuilder.newJob(JobOne.class).withIdentity("jobOne", "group1").build();Trigger triggerOne = TriggerBuilder.newTrigger().withIdentity("triggerOne", "group1").startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5) // 每5秒执行一次.repeatForever()).build();// 定义第二个作业和触发器JobDetail jobTwo = JobBuilder.newJob(JobTwo.class).withIdentity("jobTwo", "group2").build();Trigger triggerTwo = TriggerBuilder.newTrigger().withIdentity("triggerTwo", "group2").startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10) // 每10秒执行一次.repeatForever()).build();// 将作业和触发器注册到调度器中scheduler.scheduleJob(jobOne, triggerOne);scheduler.scheduleJob(jobTwo, triggerTwo);// 启动调度器scheduler.start();}
}
4. 启动应用
运行 QuartzScheduler
类中的 main
方法,Quartz 将根据配置的触发器执行 JobOne
和 JobTwo
。
总结
以上示例展示了如何在 Quartz 中配置和调度两个独立的 Job。关键步骤包括:
-
定义 Job 类:每个 Job 类实现
Job
接口并定义具体的业务逻辑。 -
配置调度器:为每个 Job 创建
JobDetail
和Trigger
,然后将它们注册到调度器中。 -
启动调度器:调用
scheduler.start()
方法启动调度器,使其开始根据触发器的配置执行 Job。
通过这种方式,你可以轻松地管理和调度多个任务。