Quartz vs. Scheduled: Java 任务调度框架对比
Quartz 和 Scheduled 是两种用于实现任务调度的 Java 框架。它们的区别主要体现在底层实现和使用方式上。
- 
Quartz:
- 底层实现:Quartz 使用数据库来存储任务和调度信息,通过定时查询数据库来触发任务执行。它使用了 Job 和 Trigger 的概念,其中 Job 代表要执行的任务,Trigger 代表触发任务执行的条件和时间表。
 - 使用方式:使用 Quartz,你需要创建 Job 类来定义具体的任务逻辑,然后创建 Trigger 来设置任务触发条件和时间表。你还需要配置一个 Scheduler 来管理任务调度,并且将 Job 和 Trigger 注册到 Scheduler 中。
 - 示例代码:
 
// 创建一个简单的 Job 类 public class MyJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { // 执行具体的任务逻辑 System.out.println('Hello Quartz!'); } } // 创建一个 Trigger 来设置任务触发条件和时间表 Trigger trigger = TriggerBuilder.newTrigger() .withIdentity('myTrigger', 'group1') .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(10)) .build(); // 创建一个 Scheduler 并注册 Job 和 Trigger Scheduler scheduler = new StdSchedulerFactory().getScheduler(); JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity('myJob', 'group1') .build(); scheduler.scheduleJob(job, trigger); // 启动 Scheduler 并开始任务调度 scheduler.start(); - 
Scheduled:
- 底层实现:Scheduled 是 Java 的一个内置工具类,它使用了线程池来实现任务调度。它通过创建一个定时任务执行的线程池,并将任务提交到线程池中执行来实现任务调度。
 - 使用方式:使用 Scheduled,你只需要在需要执行的方法上添加 @Scheduled 注解,并配置好触发任务执行的条件和时间表即可。
 - 示例代码:
 
// 在 Spring Boot 中使用 Scheduled @Component public class MyTask { @Scheduled(cron = "0/10 * * * * ?") // 设置任务触发条件和时间表 public void myMethod() { // 执行具体的任务逻辑 System.out.println('Hello Scheduled!'); } } 
总结: Quartz 和 Scheduled 都是常用的任务调度框架,它们的底层实现和使用方式有所不同。Quartz 使用数据库存储任务和调度信息,并通过定时查询数据库来触发任务执行,而 Scheduled 则是使用线程池来实现任务调度。具体选择哪种框架取决于需求和使用场景。
原文地址: https://www.cveoy.top/t/topic/pco2 著作权归作者所有。请勿转载和采集!