代码:
通过添加任务、删除任务来操作定时任务
public static void addJob(String jobName, String jobGroupName,
String triggerName, String triggerGroupName, Class jobClass, Date startTime) {
try {
Scheduler sched = schedulerFactory.getScheduler();
// 任务名,任务组,任务执行类
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName).build();
// 触发器
TriggerBuilder<Trigger> triggerBuilder = TriggerBuilder.newTrigger();
// 触发器名,触发器组
triggerBuilder.withIdentity(triggerName, triggerGroupName);
//0 15 10 * * ? 2005
if (startTime != null) {
startTime = new Date(startTime.getTime() + 259200000);
Calendar c = Calendar.getInstance();
c.setTime(startTime);
int year = c.get(java.util.Calendar.YEAR);
int month = c.get(java.util.Calendar.MONTH) + 1;//获取月份
int day = c.get(java.util.Calendar.DATE);//获取日
int hour = c.get(java.util.Calendar.HOUR);//小时
int minute = c.get(java.util.Calendar.MINUTE);//分
int second = c.get(Calendar.SECOND);//秒
String cron = second + " " + minute + " " + hour + " " + day + "/4" + " " + month + " " + "?" + " " + year;
// 触发器时间设定
triggerBuilder.withSchedule(CronScheduleBuilder.cronSchedule(cron));
//触发器时间设置
Date endTime = new Date(startTime.getTime() + 345600000);
triggerBuilder.startAt(startTime);
triggerBuilder.endAt(endTime);
// 创建Trigger对象
CronTrigger trigger = (CronTrigger) triggerBuilder.build();
// 调度容器设置JobDetail和Trigger
sched.scheduleJob(jobDetail, trigger);
// 启动
if (!sched.isShutdown()) {
sched.start();
}
} else {
logger.error("QuartzManager add job failed,startTime is null");
}
} catch (Exception e) {
logger.error("QuartzManager add job failed");
throw new RuntimeException(e);
}
}
public static void removeJob(String jobName, String jobGroupName,
String triggerName, String triggerGroupName) {
try {
Scheduler sched = schedulerFactory.getScheduler();
TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
sched.pauseTrigger(triggerKey);// 停止触发器
sched.unscheduleJob(triggerKey);// 移除触发器
sched.deleteJob(JobKey.jobKey(jobName, jobGroupName));// 删除任务
} catch (Exception e) {
logger.error("QuartzManager remove job failed");
throw new RuntimeException(e);
}
}
public static void startJobs() {
try {
Scheduler sched = schedulerFactory.getScheduler();
sched.start();
} catch (Exception e) {
logger.error("QuartzManager start job failed");
throw new RuntimeException(e);
}
}
public static void shutdownJobs() {
try {
Scheduler sched = schedulerFactory.getScheduler();
if (!sched.isShutdown()) {
sched.shutdown();
}
} catch (Exception e) {
logger.error("QuartzManager shutdown job failed");
throw new RuntimeException(e);
}
}