package com.demo.web.quartz; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * 具体执行的任务 * @author lxzqz * */ public class QuartzJob implements Job{ /** * 要执行的任务在此定义 */ @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { System.out.println("执行具体的Job:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); } }
package com.demo.web.quartz; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; /** * 普通的Trigger任务调度 * * @author lxzqz * */ public class QuartzSchedulerSimple { public static void main(String[] args) { System.out.println("初始化"); SchedulerFactory schedulerfactory = new StdSchedulerFactory(); Scheduler scheduler = null; try { scheduler = schedulerfactory.getScheduler(); JobDetail jobDetail = JobBuilder.newJob(QuartzJob.class) .withIdentity("jobDe", "schedulerG").build(); Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("simpleTrigger", "schedulerG").withSchedule( // 每15分钟执行一次 SimpleScheduleBuilder.repeatMinutelyForever(15)) .startNow().build(); scheduler.scheduleJob(jobDetail, trigger); scheduler.start(); System.out.println("启动"); } catch (SchedulerException e) { e.printStackTrace(); } } }
package com.demo.web.quartz; import org.quartz.CronScheduleBuilder; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; /** * 带Cron Like 表达式的Trigger任务调度 * * @author lxzqz * */ public class QuartzScheduler { public static void main(String[] args) { System.out.println("初始化"); SchedulerFactory schedulerfactory = new StdSchedulerFactory(); Scheduler scheduler = null; try { scheduler = schedulerfactory.getScheduler(); JobDetail jobDetail = JobBuilder.newJob(QuartzJob.class) .withIdentity("jobDe", "schedulerG").build(); Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("cronTrigger", "schedulerG") .withSchedule( // 每个小时的0,15,30,45分钟执行 CronScheduleBuilder .cronSchedule("0 0,15,30,45 * * * ?")) .startNow().build(); scheduler.scheduleJob(jobDetail, trigger); scheduler.start(); System.out.println("启动"); } catch (SchedulerException e) { e.printStackTrace(); } } }
框架核心分析
-
SchedulerFactory -- 调度程序工厂
- StdSchedulerFactory -- Quartz默认的SchedulerFactory
- DirectSchedulerFactory -- DirectSchedulerFactory是对SchedulerFactory的直接实现,通过它可以直接构建Scheduler、threadpool 等
- ThreadExecutor / DefaultThreadExecutor -- 内部线程操作对象
-
JobExecutionContext -- JOB上下文,保存着Trigger、 JobDeaitl 等信息,JOB的execute方法传递的参数就是对象的实例
- JobExecutionContextImpl
-
Scheduler -- 调度器
- StdScheduler -- Quartz默认的Scheduler
- RemoteScheduler -- 带有RMI功能的Scheduler
-
JOB --任务对象
- JobDetail -- 他是实现轮询的一个的回调类,可将参数封装成JobDataMap对象,Quartz将任务的作业状态保存在JobDetail中.
- JobDataMap -- JobDataMap用来报错由JobDetail传递过来的任务实例对象
-
Trigger
- SimpleTrigger <普通的Trigger> -- SimpleScheduleBuilder
- CronTrigger <带Cron Like 表达式的Trigger> -- CronScheduleBuilder
- CalendarIntervalTrigger <带日期触发的Trigger> -- CalendarIntervalScheduleBuilder
- DailyTimeIntervalTrigger <按天触发的Trigger> -- DailyTimeIntervalScheduleBuilder
-
ThreadPool -- 为Quartz运行任务时提供了一些线程
- SimpleThreadPool --一个Quartz默认实现的简单线程池,它足够健壮,能够应对大部分常用场景
相关推荐
### quartz开源作业调度框架知识点详解 #### 一、Quartz框架简介 Quartz是一个功能强大的、开源的作业调度框架,完全由Java编写而成。它能够被应用在服务器端的Java应用程序中,帮助开发者轻松地创建并管理定时任务...
Quartz是一个广泛应用于企业级应用中的开源作业调度框架,它为开发者提供了强大的任务调度功能,使得应用程序能够在预定的时间执行特定的任务。Quartz的核心设计目标是简单易用且可高度扩展,能够满足从小型项目到...
Quartz 是一个强大的开源作业调度框架,主要用于自动化执行任务,如定时发送邮件、执行数据清理、执行批处理等。该框架完全用 Java 编写,兼容 J2SE 和 J2EE 环境,提供了丰富的功能和灵活性,使得开发者能够方便地...
Quartz是一款广泛应用于Java环境中的开源作业调度框架,它的核心功能是实现任务的自动化执行,如定时触发、周期性执行等。Quartz以其强大的灵活性和稳定性,在企业级应用中占据了重要地位,尤其对于需要定时执行任务...
Quartz.NET是一个强大的开源作业调度框架,主要用于C#编程环境中,它允许开发者在应用程序中创建、安排和执行任务。这个框架的设计目标是提供一个灵活、可靠的解决方案,使得开发者可以轻松地构建定时任务,以实现...
Quartz作业调度框架是Java领域中非常重要的一个开源作业调度库。作业调度是指在预定的时间安排特定的任务进行执行。在企业级应用中,作业调度扮演着核心的角色,它使得企业能够自动化地执行定时任务,比如数据备份、...
Quartz是一个开源的作业调度框架,它为Java应用程序提供了强大的定时和计划功能。在Java项目中,Quartz常被用来执行周期性的任务,比如数据备份、日志清理、定时发送邮件等。本“quartz任务调度框架简单实用小demo”...
内容概要:本文档全面介绍了Quartz,一款开源的高性能作业调度框架。它不仅详细解析了Quartz的核心组件及其任务存储方式,还分享了Spring Boot环境下集成Quartz的具体步骤以及在多点集群环境中使用数据库存储的任务...
Quartz是一款开源的作业调度框架,它为Java应用程序提供了强大的定时任务处理能力。在Spring框架中,Quartz可以被集成来实现复杂的定时任务调度。本文将深入探讨Quartz的使用,包括其基本概念、配置、API以及在Web...
Quartz是一款广泛应用于Java环境中的开源任务调度框架,它提供了高度可配置的作业调度系统,使得开发者能够轻松地在应用程序中实现定时任务的管理。Quartz的核心特性包括但不限于以下几点: 1. **灵活的调度**:...
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的...
Quartz 2.1.2 for .NET 是一个强大的、完全开源的作业调度框架,专为.NET环境设计。它提供了一种高度可配置的方式,使开发者能够轻松地在应用程序中添加定时任务执行的功能。这个框架使得开发人员可以定义作业(Jobs...
Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的...
1. **Quartz文档**:Quartz开源作业调度框架.pdf 提供了Quartz的详细使用指南,包括框架的架构设计、API接口介绍、配置方法等。通过阅读这份文档,你可以了解到如何创建作业、触发器、调度器,以及如何将它们组合在...
Quartz是一个完全由java编写的开源作业调度框架,说人话就是你可以创建一些任务,规定这些任务什么时候执行、执行几次等。quartz-2.2.3-Jar包,经测试只需要引入quartz-2.2.3.jar、quartz-jobs-2.2.3.jar和slf4j-api...
Quartz.NET是一个强大的开源作业调度框架,用于在.NET环境中创建和执行定时任务。它提供了高度灵活的调度功能,使得开发者可以轻松地定义和控制任务的执行时间。在"Quartz.net作业调度自定义定时执行任务多任务执行...
前言:8月份翻译了Quartz.NET的官方课程:开源的作业调度框架 - Quartz.NET, 有的朋友抱怨难用,确实,目前Qiartz.NET的最新版本还是0.6,还存在很多bug和不完善的地方。本文使用一系列代码示例介绍 Quartz.NET API...
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz框架包含了调度器监听、作业和触发器监听。你可以配置作业和触发器监听为全局监听或者是特定于作业和触发器的监听...