超详细源码展示
SpirngBoot配置
job
Trigger 用来执行job
Schedule 用来管理Trigger
TestJob.java代码:
package cn.du.quartz;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* 测试工作类
* @author dolying
*
*/
public class TestJob implements Job{
SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = new Date();
String returnstr = DateFormat.format(d);
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println(returnstr+"***");
}
}
QuartzManager代码:
package cn.du.quartz;
import java.text.ParseException;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
/**
* Quartz管理类
* @author dolying
*
*/
public class QuartzManager {
private static SchedulerFactory sf = new StdSchedulerFactory();
private static String JOB_GROUP_NAME = "group1";
private static String TRIGGER_GROUP_NAME = "trigger1";
/**
* 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
* @param jobName 任务名
* @param job 任务
* @param time 时间设置,参考quartz说明文档
* @throws SchedulerException
* @throws ParseException
*/
public static void addJob(String jobName,Job job,String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任务名,任务组,任务执行类
//触发器
CronTrigger trigger =
new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组
trigger.setCronExpression(time);//触发器时间设定
sched.scheduleJob(jobDetail,trigger);
//启动
if(!sched.isShutdown())
sched.start();
}
/**
* 添加一个定时任务
* @param jobName 任务名
* @param jobGroupName 任务组名
* @param triggerName 触发器名
* @param triggerGroupName 触发器组名
* @param job 任务
* @param time 时间设置,参考quartz说明文档
* @throws SchedulerException
* @throws ParseException
*/
public static void addJob(String jobName,String jobGroupName,
String triggerName,String triggerGroupName,
Job job,String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任务名,任务组,任务执行类
//触发器
CronTrigger trigger =
new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组
trigger.setCronExpression(time);//触发器时间设定
sched.scheduleJob(jobDetail,trigger);
if(!sched.isShutdown())
sched.start();
}
/**
* 修改一个任务的触发器时间(使用默认的任务组名,触发器名,触发器组名)
* @param jobName
* @param time
* @throws SchedulerException
* @throws ParseException
*/
public static void modifyJobTime(String jobName,String time)
throws SchedulerException,ParseException{
Scheduler sched = sf.getScheduler();
Trigger trigger = sched.getTrigger(jobName, TRIGGER_GROUP_NAME);
if(trigger != null){
CronTrigger ct = (CronTrigger)trigger;
ct.setCronExpression(time);
sched.resumeTrigger(jobName, TRIGGER_GROUP_NAME);
}
}
/**
* 修改一个任务的触发器
* @param triggerName
* @param triggerGroupNme
* @param time
* @throws SchedulerException
* @throws ParseException
*/
public static void modifyJobTime(String triggerName,String triggerGroupNme,String time)
throws SchedulerException,ParseException{
Scheduler sched = sf.getScheduler();
Trigger trigger = sched.getTrigger(triggerName, triggerGroupNme);
if(trigger != null){
CronTrigger ct = (CronTrigger)trigger;
//修改时间
ct.setCronExpression(time);
//重启触发器
sched.resumeTrigger(triggerName, triggerGroupNme);
}
}
/**
* 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
* @param jobName
* @throws SchedulerException
*/
public static void removeJob(String jobName)throws SchedulerException{
Scheduler sched = sf.getScheduler();
sched.pauseTrigger(jobName, TRIGGER_GROUP_NAME);
sched.unscheduleJob(jobName, TRIGGER_GROUP_NAME);
sched.deleteJob(jobName, JOB_GROUP_NAME);
}
/**
* 移除一个任务
* @param jobGroupName
* @param jobName
* @param triggerName
* @param triggerGroupName
* @throws SchedulerException
*/
public static void removeJob(String jobGroupName,String jobName,
String triggerName,String triggerGroupName)throws SchedulerException{
Scheduler sched = sf.getScheduler();
//停止触发器
sched.pauseTrigger(triggerName, triggerGroupName);
//移除触发器
sched.unscheduleJob(triggerName, triggerGroupName);
//删除任务
sched.deleteJob(jobName, jobGroupName);
}
}
Java中的main方法代码:
package cn.du.quartz;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 测试main函数
* @author dolying
*
*/
public class QuartzTest {
public static void main(String[] args){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
String returnstr = dateFormat.format(date);
TestJob job = new TestJob();
String job_name="11";
try{
System.out.println(returnstr+"【系统启动】");
//每2秒钟执行一次
QuartzManager.addJob(job_name,job,"0/2 * * * * ?");
Thread.sleep(10000);
System.out.println("【修改时间】");
QuartzManager.modifyJobTime(job_name, "0/10 * * * * ?");
Thread.sleep(20000);
System.out.println("【移除定时】");
QuartzManager.removeJob(job_name);
Thread.sleep(10000);
System.out.println("【添加定时任务】");
QuartzManager.addJob(job_name, job, "0/5 * * * * ?");
}catch(Exception e){
e.printStackTrace();
}
}
}
————————————————
版权声明:本文为CSDN博主「dolyings」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fly12310/article/details/52924510
评论区