一、Quartz是一个任务调度框架。比如你遇到这样的问题
1、想每月25号,信用卡自动还款
2、想每年1月15日自己给当年暗恋女神发一封匿名贺卡
3、想每隔1小时,备份一下自己的爱情动作片 学习笔记到云盘
这些问题总结起来就是:在某一个有规律的时间点干某件事。并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这个事。 Quartz就是来干这样的事,你给它一个触发条件的定义,它负责到了时间点,触发相应的Job起来干活
二、Quartz核心概念
1、调度器 2、任务 3、干触发器
三、体系结构
四、重要组成
1、Job 2、JobDetail 3、JobBuilder 4、JobStore 5、Trigger 6、TriggerBuilder 7、ThreadPool 8、scheduler
9、Calendar 10、监听器JobListener,TriggerListener,SchedulerListener
五、第一个Quartz程序
1、引入jar <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency> 2、代码 public class HelloJob implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { //打印当前时间 Date date = new Date(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM--dd HH:mm:ss"); System.out.println("Current Exec Time is>>>" + sf.format(date)); //todo System.out.println("Hello World!"); } } /** * @Author zhumiao * @Date 22:52 2019/1/16 */ public class HelloSchedule { public static void main(String[] args) throws SchedulerException { //创建一个JobDetail实例,将实例与HelloJob class绑定 JobDetail jobDetail = JobBuilder.newJob(HelloJob.class) .withIdentity("myJob","group1").build(); //创建一个Trigger实例,定义立即执行,并且3秒钟执行一次,到永久 Trigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger","group1") .startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(3).repeatForever()) .build(); //创建scheduler实例 SchedulerFactory sft = new StdSchedulerFactory(); Scheduler scheduler = sft.getScheduler(); scheduler.start(); Date date = new Date(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM--dd HH:mm:ss"); System.out.println("Current Exec Time is>>>" + sf.format(date)); scheduler.scheduleJob(jobDetail,trigger); } }
参考:https://www.cnblogs.com/drift-ice/p/3817269.html