package com.bobo.quartz; import com.bobo.quartz.job.HelloJob; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; /** * @author bobo * Created by bobo on 2018/5/16/20:59. */ /** * Quartz API的关键接口是: * Scheduler - 与调度程序交互的主要API。 * Job - 由希望由调度程序执行的组件实现的接口。 * JobDetail - 用于定义作业的实例。 * Trigger(即触发器) - 定义执行给定作业的计划的组件。 * JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例。 * TriggerBuilder - 用于定义/构建触发器实例。 */ /** * Scheduler的生命期,从SchedulerFactory创建它时开始, * 到Scheduler调用shutdown()方法时结束;Scheduler被创建后, * 可以增加、删除和列举Job和Trigger,以及执行其它与调度相关的操作(如暂停Trigger)。 * 但是,Scheduler只有在调用start()方法后,才会真正地触发trigger(即执行job)。 */ /** * 触发器的方式有两种,一种是SimpleTrigger,作用是执行一次性的任务,或者是在特定的时间 * 点执行,重复N次,每次执行的间隔是T个时间单位。 * 一种是CronTrigger,和linux中的定时任务一致,可以看做是基于日历的调度。 * 两种调度方式。 * 第一种是: * //方式一: * Trigger trigger1 = TriggerBuilder * .newTrigger() * .withIdentity("我的第一个触发器", "group1") * .withSchedule( * SimpleScheduleBuilder.simpleSchedule() * .withIntervalInSeconds(5).repeatForever()) * .build(); * 第二种是: * //方式二: * Trigger trigger2 = TriggerBuilder * .newTrigger() * .withIdentity("我的第二个触发器", "group1") * .withSchedule( * CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) * .build(); *其中需要强调的是name、group、key的作用 * 在其官方文档中提到 * * <p> * <code>Job</code> s and <code>Trigger</code> s have a name and group * associated with them, which should uniquely identify them within a single * <code>{@link Scheduler}</code>. The 'group' feature may be useful for * creating logical groupings or categorizations of <code>Jobs</code> s and * <code>Triggers</code>s. If you don't have need for assigning a group to a * given <code>Jobs</code> of <code>Triggers</code>, then you can use the * <code>DEFAULT_GROUP</code> constant defined on this interface. * </p> * 翻译过来的意思是说:job和trigger有一个关联的name和group,这两者可以唯一标识他们。 * group特性可以用来创建逻辑分组或者对于job和trigger分类。如果你不需要 * 分类,你可以使用这个接口上定义的DEFAULT_GROUP常量。 * 将Job和Trigger注册到Scheduler时,可以为它们设置key, * 配置其身份属性。Job和Trigger的key(JobKey和TriggerKey)可以用于将Job和Trigger放到不同的分组(group)里, * 然后基于分组进行操作。同一个分组下的Job或Trigger的名称必须唯一, * 即一个Job或Trigger的key由名称(name)和分组(group)组成。 * */ public class QuartzTest02 { public static void main(String[] args) throws SchedulerException { //调度工具 SchedulerFactory factory=new StdSchedulerFactory(); //获取调度实例 Scheduler scheduler=factory.getScheduler(); //开始一个调度 scheduler.start(); //用于定义作业的实例,其中hellojob实现了job这个接口 JobDetail jobDetail=JobBuilder.newJob(HelloJob.class) .withIdentity("myJob","group1") .build(); //触发器,定义执行给定作业的计划的组件 Trigger trigger=TriggerBuilder.newTrigger() .withIdentity("myTrigger","group1") .startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(2) .repeatForever()) .build(); scheduler.scheduleJob(jobDetail,trigger); } }
Quartz---开始
猜你喜欢
转载自blog.csdn.net/qq_25484147/article/details/80465563
今日推荐
周排行