quartz-2实例
2015-09-23 13:23
363 查看
import static org.quartz.CronScheduleBuilder.cronSchedule; import static org.quartz.JobBuilder.newJob; import static org.quartz.SimpleScheduleBuilder.simpleSchedule; import static org.quartz.TriggerBuilder.newTrigger; import java.util.Date; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.SimpleTrigger; import org.quartz.TriggerKey; import org.quartz.impl.StdSchedulerFactory; 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"; public static void addJob(String jobName, Class cls, String time) { try { Scheduler sched = gSchedulerFactory.getScheduler(); // 任务 JobDetail job = newJob(cls).withIdentity(jobName, JOB_GROUP_NAME) .build(); // 触发器 CronTrigger trigger = newTrigger() .withIdentity(TRIGGER_GROUP_NAME, JOB_GROUP_NAME) .withSchedule(cronSchedule(time)).build(); sched.scheduleJob(job, trigger); // 启动 if (!sched.isShutdown()) { sched.start(); } } catch (Exception e) { throw new RuntimeException(e); } } public static void addJob(String jobName, Class cls, int time) { try { Scheduler sched = gSchedulerFactory.getScheduler(); // 任务 JobDetail job = newJob(cls).withIdentity(jobName, JOB_GROUP_NAME) .build(); // 触发器 SimpleTrigger trigger = (SimpleTrigger) newTrigger() .withIdentity(TRIGGER_GROUP_NAME, JOB_GROUP_NAME) .startAt(new Date()) .withSchedule( simpleSchedule().withIntervalInSeconds(time) .repeatForever()).build(); sched.scheduleJob(job, trigger); // 启动 if (!sched.isShutdown()) { sched.start(); } } catch (Exception e) { throw new RuntimeException(e); } } private static void startJobs() { try { Scheduler sched = gSchedulerFactory.getScheduler(); sched.start(); } catch (Exception e) { throw new RuntimeException(e); } } private static void shutdownJobs() { try { Scheduler sched = gSchedulerFactory.getScheduler(); if (!sched.isShutdown()) { sched.shutdown(); } } catch (Exception e) { throw new RuntimeException(e); } } public static void removeJob(String jobName) { try { Scheduler sched = gSchedulerFactory.getScheduler(); // 停止触发器 sched.pauseTrigger(TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME)); // 移除触发器 sched.unscheduleJob(TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME)); // 删除任务 sched.deleteJob(JobKey.jobKey(jobName, JOB_GROUP_NAME)); } catch (Exception e) { throw new RuntimeException(e); } } public static void modifyJobTime(String jobName, String time) { try { Scheduler sched = gSchedulerFactory.getScheduler(); CronTrigger trigger = (CronTrigger) sched.getTrigger(TriggerKey .triggerKey(jobName, TRIGGER_GROUP_NAME)); if (trigger == null) { return; } String oldTime = trigger.getCronExpression(); if (!oldTime.equalsIgnoreCase(time)) { JobDetail jobDetail = sched.getJobDetail(JobKey.jobKey(jobName, JOB_GROUP_NAME)); Class objJobClass = jobDetail.getJobClass(); removeJob(jobName); addJob(jobName, objJobClass, time); } } catch (Exception e) { throw new RuntimeException(e); } } public static void modifyJobTime(String jobName, int time) { try { Scheduler sched = gSchedulerFactory.getScheduler(); SimpleTrigger trigger = (SimpleTrigger) sched.getTrigger(TriggerKey .triggerKey(jobName, TRIGGER_GROUP_NAME)); if (trigger == null) { return; } JobDetail jobDetail = sched.getJobDetail(JobKey.jobKey(jobName, JOB_GROUP_NAME)); Class objJobClass = jobDetail.getJobClass(); removeJob(jobName); addJob(jobName, objJobClass, time); } catch (Exception e) { throw new RuntimeException(e); } } public static boolean isExist(String jobName) { try { Scheduler sched = gSchedulerFactory.getScheduler(); SimpleTrigger trigger = (SimpleTrigger) sched.getTrigger(TriggerKey .triggerKey(jobName, TRIGGER_GROUP_NAME)); if (trigger == null) { return true; } else { return false; } } catch (Exception e) { throw new RuntimeException(e); } } }
import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; 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())); } }
public class QuartzTest { public static void main(String[] args) { try { String job_name = "动态任务调度"; System.out.println("【系统启动】开始(每1秒输出一次)..."); QuartzManager.addJob(job_name, QuartzJob.class, "0/1 * * * * ?"); Thread.sleep(5000); System.out.println("【修改时间】开始(每2秒输出一次)..."); QuartzManager.modifyJobTime(job_name, "0/2 * * * * ?"); Thread.sleep(6000); System.out.println("【移除定时】开始..."); QuartzManager.removeJob(job_name); System.out.println("【移除定时】成功"); System.out.println("【再次添加定时任务】开始(每10秒输出一次)..."); QuartzManager.addJob(job_name, QuartzJob.class, "*/10 * * * * ?"); Thread.sleep(60000); System.out.println("【移除定时】开始..."); QuartzManager.removeJob(job_name); System.out.println("【移除定时】成功"); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- 直线提前量瞄准
- Android SurfaceView的总结与理解
- virtualbox安装centos6.5设置共享文件夹
- Eclipse下编写C++程序——CDT环境搭建
- Eclipse黑色主题设置方法
- Hustoj关闭Apache的目录浏览功能
- 推荐2一个在Java编码过程中得心应手的工具
- Notepad++ Emmet安装方法教程
- 将Sublime Text 添加到鼠标右键菜单的教程方法
- qml学习--------------图形的变换
- java输入的几种方式 转
- 初探 iOS8 中的 Size Class
- struct和typedef struct
- [原]打造Python开发环境之初篇
- 书法2
- nginx解析php请求为404
- EditText属性
- BLE应用
- Python的Urllib库详细教程
- 不要问用户想要什么!用户访谈3基本问题,致产品经理