图解quartz工作流程
quartz相关表达式
在线生成表达式网址:http://cron.qqe2.com/
4、代码演示(包含简单调度器以及表达式触发器两类)
所需pom依赖
<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>
具体作业类代码
package com.javaxl.quartz01.job; import org.quartz.*; /** * @author 小李飞刀 * @site www.javaxl.com * @company * @create 2019-02-19 11:48 */ public class RamJob implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { System.out.println("定时任务执行......"); JobDetail jobDetail = jobExecutionContext.getJobDetail(); JobDataMap jobDataMap = jobDetail.getJobDataMap(); System.out.println("定时任务参数:name->"+jobDataMap.get("name")+",job->" +jobDataMap.get("job")+",level->"+jobDataMap.get("level")); } }
执行作业类逻辑
public static void main(String[] args) throws SchedulerException { // 创建调度工厂类实例StdSchedulerFactory SchedulerFactory sc=new StdSchedulerFactory(); // 创建调度器实例Scheduler Scheduler scheduler=sc.getScheduler(); // 创建任务详情JobDetail JobDetail jobDetail=newJob(RamJob.class) .withIdentity("detail01","group01") //组成唯一标识 .withDescription("this is a jobDetail") // 向具体执行的作业类传值方式一 .usingJobData("level","老手") .build(); //向具体执行的作业类传值方式二 JobDataMap jobDataMap=jobDetail.getJobDataMap(); jobDataMap.put("name","张三"); jobDataMap.put("job","司机"); long currentTime = System.currentTimeMillis()+6*1000L; Date time = new Date(currentTime); Trigger trigger= (Trigger) TriggerBuilder.newTrigger() .withIdentity("trigger1","group01") //组成唯一标识 .startAt(time) //开始时间 .withDescription("this is a trigger") //// 简单调度器 // .withSchedule(SimpleScheduleBuilder.simpleSchedule() //// 每隔两秒重复执行3次 // .withIntervalInSeconds(2).withRepeatCount(3)) // 表达式调度器(在线生成定时任务表达式:http://cron.qqe2.com/) // 每5秒执行一次作业类逻辑代码 .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ? ")) .build(); // 注入作业类以及触发器到调度器中 scheduler.scheduleJob(jobDetail,trigger); // 启动调度器 scheduler.start(); }
小结:
quartz的核心类有以下三个需要牢记:
调度器:Scheduler
触发器:Trigger
作业类:JobDetail
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有