maven依赖:
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.1</version> </dependency>
首先需要配置文件(quartz.properties):
org.quartz.scheduler.instanceName = QuartzTest
org.quartz.threadPool.threadCount = 10
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
需要有一个类实现Job接口,并实现其中的execute方法,简单的写一点:
package com.hj.quartz.impl; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.text.SimpleDateFormat; import java.util.Date; public class MyTestJob implements Job { public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); System.out.println("当前时间为:" + dateFormat.format(date)); } }
main函数所在的类,使用实现类的类名,反射的方式创建任务:
package com.hj.quartz; import com.hj.quartz.impl.MyTestJob; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import java.text.SimpleDateFormat; import java.util.Date; public class QuartzTest { public static void main(String[] args) { try { Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); // 创建任务 JobDetail job = JobBuilder.newJob(MyTestJob.class).withIdentity("job1","group1").build(); // 创建触发器(指定出发规则) CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger", "group1").withSchedule(CronScheduleBuilder.cronSchedule("0 45/1 20-22 * * ?")).build(); // 获取执行时间 Date date = scheduler.scheduleJob(job,trigger); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); System.out.println("已经安排任务:" + dateFormat.format(date)); scheduler.start(); System.out.println("结束"); } catch (SchedulerException e) { System.out.println("错误"); e.printStackTrace(); } } }
Cron式子:
0 0 12 * * ? 每天12点触发 0 15 10 ? * * 每天10点15分触发 0 15 10 * * ? 每天10点15分触发 0 15 10 * * ? * 每天10点15分触发 0 15 10 * * ? 2005 2005年每天10点15分触发 0 * 14 * * ? 每天下午的 2点到2点59分每分触发 0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) 0 0/5 14,18 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) 每天下午的 18点到18点59分(整点开始,每隔5分触发) 0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发 0 10,44 14 ? 3 WED 3月分每周三下午的 2点10分和2点44分触发 0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发 0 15 10 15 * ? 每月15号上午10点15分触发 0 15 10 L * ? 每月最后一天的10点15分触发 0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发 0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发 0 15 10 ? * 6#3 每月的第三周的星期五开始触发 0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次 0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)
参考链接:https://blog.csdn.net/fighting_sxw/article/details/81700944