【quartz学习笔记】几个重要的概念

本文深入解析Quartz定时任务框架的关键组件,包括Job、JobDetail、Trigger、Scheduler及StdSchedulerFactory,阐述了如何通过这些组件实现定时任务的定义与执行,特别对比了SimpleTrigger与CronTrigger的不同应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    因为项目的需求开始学习接触定时任务框架——quartz

一.几个重要的类/接口(概念)

  1. Job

               实现定时任务执行的内容接口,实际的任务类需要实现该接口,该接口只有一个方法,execute(),即定时任务的业务逻辑写在该方法体中即可。

     2.JobDetail

                quart框架不会直接调用我们所定义的job类,而是通过反射机制实现一个类JobDetail。对于Job和JobDetail,我的理解是:Job是开发者的业务逻辑(调度任务的类容),而对于quartz框架来说则是JobDetail。

 //定义一个任务
 JobDetail jobDetail = JobBuilder
                    .newJob(MyJob.class)
                    .withIdentity("myJobName","myJobGroup")
                    .build();

    3.Trigger

                定时任务的执行时机,即,什么时候执行(触发),怎么样执行。Trigger是一个借口,其中实现类有多种,其中最常用的是:SimpleTrigger和CronTrigger。这两个实现类各自有各自的不同

                SimpleTrigger:满足的调度需求是,在具体的时间点执行一次,或在具体的时间点执行,并且能在指定的时间间隔重复执行若干次。比如在2019年3月2日某一时间触发,或者在这个时间点触发,并且之后以每多少秒的时间间隔执行多少次。

所以SimpleTrigger的基本属性包括:开始时间,结束时间,重复次数,重复的时间间隔。可以发现SimpleTrigger能够定义的任务触发时机都是,在一个准确的时间执行,然后执行多少次(没多少时间重复一次,等多少时间后结束或者一直重复下去)

Trigger trigger = TriggerBuilder
                    .newTrigger()
                    .withIdentity("myTriggerName","myTriigerGroup")
                    .withDescription("This is a Trigger !")
                    .withSchedule(SimpleScheduleBuilder
                            .simpleSchedule()
                            //每五秒重复一次
                            .withIntervalInSeconds(5)
                            .repeatForever())
                    .build();

             CronTrigger:满足的调度时机更加的复杂些。即它是基于时间表的,也就说可以定义在某一时间点都会去触发的任务,比如,在每周的周六早上八点同步一次数据到某某系统。

具体事例(代码):QuartZ官方文档

    4.Schedule

             理解:将任务和触发器组合后交给quartz框架进行执行。

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
            scheduler.scheduleJob(jobDetail,trigger);
            scheduler.start();

   5.StdSchedulerFactory

          工厂类,获取需要的Schedule实例。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值