Quartz详解入门必备

Quartz是什么

		Java中的**定时任务**调度框架!!!

Java中我们可以常看到定时框架:

  • Quartz框架
  • Spring Task框架

但是Quartz框架使用的成都比较多,调度简单

  • Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。
  • Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或EJBs。
  • Quartz框架是一个开源的企业级任务调度服务,已经被作为任务调度的良好解决方案
  • 任务调度涉及多线程并发、线程池维护、运行时间规则解析、运行现场的保护以恢复等方面

Quartz三大核心概念:

  • 任务 JOB:要执行的动作,Quartz提供Job接口来支持任务定义
  • 触发器 Trigger: 什么时候被执行,Quartz提供Trigger类及其子类支持触发器功能
  • 调度器 Scheduler :负责绑定触发器和任务 进行任务调度,Quartz提供了Scheduler接口,将工作任务和触发器绑定,保证任务可以在正确的时间执行!!

Quartz的功能是什么?(定时任务)

举例:有一个餐馆每天的晚上11点打烊的时候,要自动计算今日的营业额,这里我们就可以有一个定时任务,定在营业当天的晚上11点

第一步:导入依赖

Quartz需要的依赖包(Maven管理):

<dependency>
	<groupId>org.quartz-scheduler</groupId>
	<artifactId>quartz</artifactId>
	<version>2.2.1</version>
</dependency>
<dependency>
	<groupId>org.quartz-scheduler</groupId>
	<artifactId>quartz-jobs</artifactId>
	<version>2.2.1</version>
</dependency>

第二步:创建MyJob类,并实现org.quartz.Job接口

public class MyJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("定时任务启动");
        //可以调用自定义方法
    }
}

第三步:编写测试类TestQuartz(SimpleTriggerImpl,CronTriggerImpl)

二选一:CronTriggerImpl更强大,功能更全,使用较多,允许用户更精准地控制任务的运行日期和时间,而不仅仅是定义工作的频度

public class TestQuartz {

    public static void main(String[] args) throws Exception{
        //1.创建一个任务
        JobDetail jobDetail=new JobDetailImpl("myJob","group",MyJob.class);
        //2.解释:创建一个触发器(简单复杂触发器SimpleTriggerImpl),每间隔2秒执行1次  一共执行10次!
        Trigger trigger =new SimpleTriggerImpl("trigger",10,2000);
      
        //3.创建一个调度器
        Scheduler scheduler=new StdSchedulerFactory().getScheduler();
        //4.调度任务
        scheduler.scheduleJob(jobDetail,trigger);
        //5.启动
        scheduler.start();

		// 关闭调度
		//sched.shutdown();
    }
}
public class TestQuartz {

    public static void main(String[] args) throws Exception{
        //1.创建一个任务
        JobDetail jobDetail=new JobDetailImpl("myJob","group",MyJob.class);
        //2.解释:创建一个触发器(简单复杂触发器SimpleTriggerImpl),每间隔2秒执行1次  一共执行10次!
         Trigger trigger=new CronTriggerImpl("trigger","group","0 35 11 * * ? *");
      
        //3.创建一个调度器
        Scheduler scheduler=new StdSchedulerFactory().getScheduler();
        //4.调度任务
        scheduler.scheduleJob(jobDetail,trigger);
        //5.启动
        scheduler.start();
		// 关闭调度
		//sched.shutdown();
    
    }
}

0 35 11 * * ? *:这是一个cron表达式,可以自己编写,也可以自动生成。

涉及到cron表达式

在这里插入图片描述


代码中分析:SimpleTriggerImpl,CronTriggerImpl区别
在这里插入图片描述

Quartz整合SSM例子

发布了41 篇原创文章 · 获赞 28 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/weixin_44519467/article/details/104555237