Quartz管理类

来源:互联网 发布:mac java9.0怎么卸载 编辑:程序博客网 时间:2024/05/24 03:58
package com.sihuatech.project.task.manager;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;/** * @Title:Quartz管理类 *  * @Description: *  * @Copyright: * @author lei 2008-10-8 14:19:01 * @version 1.00.000 *  */public class QuartzManager {private static SchedulerFactory sf = new StdSchedulerFactory();private static String JOB_GROUP_NAME = "group1";private static String TRIGGER_GROUP_NAME = "trigger1";private static QuartzManager quartzManager;public static QuartzManager getInstance() {if (quartzManager == null) {quartzManager = new QuartzManager();}return quartzManager;}private QuartzManager() {}/** * 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名 *  * @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 triggerGroupName * @param time * @throws SchedulerException * @throws ParseException */public static void modifyJobTime(String triggerName, String triggerGroupName, String time) throws SchedulerException, ParseException {Scheduler sched = sf.getScheduler();Trigger trigger = sched.getTrigger(triggerName, triggerGroupName);if (trigger != null) {CronTrigger ct = (CronTrigger) trigger;// 修改时间ct.setCronExpression(time);// 重启触发器sched.resumeTrigger(triggerName, triggerGroupName);}}/** * 移除一个任务(使用默认的任务组名,触发器名,触发器组名) *  * @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 jobName * @param jobGroupName * @param triggerName * @param triggerGroupName * @throws SchedulerException */public static void removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName) throws SchedulerException {Scheduler sched = sf.getScheduler();sched.pauseTrigger(triggerName, triggerGroupName);// 停止触发器sched.unscheduleJob(triggerName, triggerGroupName);// 移除触发器sched.deleteJob(jobName, jobGroupName);// 删除任务}}

原创粉丝点击