/** * @Description: * * @Title: QuartzManager.java * @Package com.joyce.quartz * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:15:52 PM * @version V2.0 */ package com.joyce.quartz; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.impl.StdSchedulerFactory; /** * @Description: Scheduled task management class * * @ClassName: QuartzManager * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:15:52 PM * @version V2.0 */ public class QuartzManager { private static SchedulerFactory gSchedulerFactory = new StdSchedulerFactory(); private static String JOB_GROUP_NAME = "EXTJWEB_JOBGROUP_NAME"; private static String TRIGGER_GROUP_NAME = "EXTJWEB_TRIGGERGROUP_NAME"; /** * @Description: Add a scheduled task, use the default task group name, trigger name, trigger group name * * @param jobName * task name * @param cls * Task * @param time * Time setting, refer to quartz documentation * * @Title: QuartzManager.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:47:44 PM * @version V2.0 */ @SuppressWarnings("unchecked") public static void addJob(String jobName, Class cls, String time) { try { Scheduler sched = gSchedulerFactory.getScheduler(); JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, cls);// task name, task group, task execution class // trigger CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);// trigger name, trigger group trigger.setCronExpression(time);// trigger time setting sched.scheduleJob(jobDetail, trigger); // start up if (!sched.isShutdown()) { sched.start(); } } catch (Exception e) { throw new RuntimeException(e); } } /** * @Description: Add a scheduled task * * @param jobName * task name * @param jobGroupName * Task group name * @param triggerName * trigger name * @param triggerGroupName * trigger group name * @param jobClass * Task * @param time * Time setting, refer to quartz documentation * * @Title: QuartzManager.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:48:15 pm * @version V2.0 */ @SuppressWarnings("unchecked") public static void addJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName, Class jobClass, String time) { try { Scheduler sched = gSchedulerFactory.getScheduler(); JobDetail jobDetail = new JobDetail(jobName, jobGroupName, jobClass);// task name, task group, task execution class // trigger CronTrigger trigger = new CronTrigger(triggerName, triggerGroupName);// trigger name, trigger group trigger.setCronExpression(time);// trigger time setting sched.scheduleJob(jobDetail, trigger); } catch (Exception e) { throw new RuntimeException(e); } } /** * @Description: Modify the trigger time of a task (use the default task group name, trigger name, trigger group name) * * @param jobName * @param time * * @Title: QuartzManager.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:49:21 PM * @version V2.0 */ @SuppressWarnings("unchecked") public static void modifyJobTime(String jobName, String time) { try { Scheduler sched = gSchedulerFactory.getScheduler(); CronTrigger trigger = (CronTrigger) sched.getTrigger(jobName,TRIGGER_GROUP_NAME); if (trigger == null) { return; } String oldTime = trigger.getCronExpression(); if (!oldTime.equalsIgnoreCase(time)) { JobDetail jobDetail = sched.getJobDetail(jobName,JOB_GROUP_NAME); Class objJobClass = jobDetail.getJobClass(); removeJob(jobName); addJob(jobName, objJobClass, time); } } catch (Exception e) { throw new RuntimeException(e); } } /** * @Description: Modify the trigger time of a task * * @param triggerName * @param triggerGroupName * @param time * * @Title: QuartzManager.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:49:37 PM * @version V2.0 */ public static void modifyJobTime(String triggerName, String triggerGroupName, String time) { try { Scheduler sched = gSchedulerFactory.getScheduler(); CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerName,triggerGroupName); if (trigger == null) { return; } String oldTime = trigger.getCronExpression(); if (!oldTime.equalsIgnoreCase(time)) { CronTrigger ct = (CronTrigger) trigger; // Change the time ct.setCronExpression(time); // restart trigger sched.resumeTrigger(triggerName, triggerGroupName); } } catch (Exception e) { throw new RuntimeException(e); } } /** * @Description: remove a task (use default task group name, trigger name, trigger group name) * * @param jobName * * @Title: QuartzManager.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:49:51 PM * @version V2.0 */ public static void removeJob(String jobName) { try { Scheduler sched = gSchedulerFactory.getScheduler(); sched.pauseTrigger(jobName, TRIGGER_GROUP_NAME);// stop trigger sched.unscheduleJob(jobName, TRIGGER_GROUP_NAME);// remove trigger sched.deleteJob(jobName, JOB_GROUP_NAME);// delete the job } catch (Exception e) { throw new RuntimeException(e); } } /** * @Description: remove a task * * @param jobName * @param jobGroupName * @param triggerName * @param triggerGroupName * * @Title: QuartzManager.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:50:01 pm * @version V2.0 */ public static void removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName) { try { Scheduler sched = gSchedulerFactory.getScheduler(); sched.pauseTrigger(triggerName, triggerGroupName);// stop trigger sched.unscheduleJob(triggerName, triggerGroupName);// remove trigger sched.deleteJob(jobName, jobGroupName);// delete the job } catch (Exception e) { throw new RuntimeException(e); } } /** * @Description: start all timed tasks * * * @Title: QuartzManager.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:50:18 PM * @version V2.0 */ public static void startJobs() { try { Scheduler sched = gSchedulerFactory.getScheduler(); sched.start(); } catch (Exception e) { throw new RuntimeException(e); } } /** * @Description: Close all timed tasks * * * @Title: QuartzManager.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:50:26 PM * @version V2.0 */ public static void shutdownJobs() { try { Scheduler sched = gSchedulerFactory.getScheduler(); if (!sched.isShutdown()) { sched.shutdown(); } } catch (Exception e) { throw new RuntimeException(e); } } }
The above are the common operations of quartz task scheduling for tasks, encapsulated for external calls! So we need the execution of the task:
/** * @Description: * * @Title: QuartzJob.java * @Package com.joyce.quartz * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:37:11 PM * @version V2.0 */ package com.joyce.quartz; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * @Description: Task execution class * * @ClassName: QuartzJob * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:37:11 PM * @version V2.0 */ public class QuartzJob implements Job { @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+ "★★★★★★★★★★★"); } }
Ok, let's test it out:
package com.joyce.quartz.main; import com.joyce.quartz.QuartzJob; import com.joyce.quartz.QuartzManager; /** * @Description: Test class * * @ClassName: QuartzTest * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 03:35:05 pm * @version V2.0 */ public class QuartzTest { public static void main(String[] args) { try { String job_name = "Dynamic Job Scheduling"; System.out.println("[System startup] starts (output every 1 second)..."); QuartzManager.addJob(job_name, QuartzJob.class, "0/1 * * * * ?"); Thread.sleep(5000); System.out.println("[Modification time] starts (output every 2 seconds)..."); QuartzManager.modifyJobTime(job_name, "10/2 * * * * ?"); Thread.sleep(6000); System.out.println("[Remove timing] Start..."); QuartzManager.removeJob(job_name); System.out.println("[Remove timing] successful"); System.out.println("[Add a scheduled task again] Start (output every 10 seconds)..."); QuartzManager.addJob(job_name, QuartzJob.class, "*/10 * * * * ?"); Thread.sleep(60000); System.out.println("[Remove timing] Start..."); QuartzManager.removeJob(job_name); System.out.println("[Remove timing] successful"); } catch (Exception e) { e.printStackTrace (); } } }
Reference: http://blog.csdn.net/pengpegv5yaya/article/details/37595889
clover distributed task scheduling system
https://blog.csdn.net/stark_summer/article/details/43449621