Quartz 工具类
来源:互联网 发布:软件技术有限公司 编辑:程序博客网 时间:2024/05/16 15:22
package test;import org.quartz.CronScheduleBuilder;import org.quartz.CronTrigger;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.JobKey;import org.quartz.Scheduler;import org.quartz.SchedulerFactory;import org.quartz.TriggerBuilder;import org.quartz.TriggerKey;import org.quartz.impl.StdSchedulerFactory;/** * Quartz 工具类 <br> * Date: 2016年6月22日 <br> * Copyright (c) 2016 xyw10000@163.com <br> * * @author xuyw */public class QuartzUtil { private static SchedulerFactory schedulerFactory; private static Scheduler scheduler =null; static { try { schedulerFactory = new StdSchedulerFactory(); scheduler = schedulerFactory.getScheduler(); } catch (Exception e) { e.printStackTrace(); } } /** * 添加job */ public static void addJob(BaseJob job) { try { JobDetail jobDetail = JobBuilder.newJob(job.getClass()) .withIdentity(job.getJobName(), job.getGroupName()).build(); CronTrigger trigger = TriggerBuilder .newTrigger() .withIdentity(job.getJobName(), job.getGroupName()) .withSchedule( CronScheduleBuilder.cronSchedule(job.getCron())) .build(); scheduler.scheduleJob(jobDetail, trigger); startJobs(); } catch (Exception e) { e.printStackTrace(); } } /** * 更新job执行时间 */ public static void modifyJobCron(BaseJob job) { try { String triggerName = job.getJobName(); String triggerGroupName = job.getGroupName(); TriggerKey triggerKey = new TriggerKey(triggerName, triggerGroupName); CronTrigger trigger = (CronTrigger) scheduler .getTrigger(triggerKey); if (trigger == null) { return; } String oldCron = trigger.getCronExpression(); if (!oldCron.equalsIgnoreCase(job.getCron())) { // 修改时间 trigger = trigger .getTriggerBuilder() .withIdentity(triggerKey) .withSchedule( CronScheduleBuilder.cronSchedule(job.getCron())) .build(); // 重启触发器 scheduler.rescheduleJob(triggerKey, trigger); } } catch (Exception e) { e.printStackTrace(); } } /** * 暂停任务 */ public static void pauseJob(BaseJob job) { pauseJob(job.getJobName(), job.getGroupName()); } /** * 暂停任务 */ public static void pauseJob(String jobName, String jobGroup) { handleJobStatus(1, jobName, jobGroup); } /** * 移除job */ public static void removeJob(BaseJob job) { removeJob(job.getJobName(), job.getGroupName()); } /** * 移除job */ public static void removeJob(String jobName, String groupName) { handleJobStatus(3, jobName, groupName); } /** * 恢复job */ public static void recoverJob(BaseJob job) { recoverJob(job.getJobName(), job.getGroupName()); } /** * 恢复job */ public static void recoverJob(String jobName, String groupName) { handleJobStatus(2, jobName, groupName); } /** * 处理job状态 */ public static void handleJobStatus(int handleType, String jobName, String groupName) { JobKey jobKey = JobKey.jobKey(jobName, groupName); try { switch (handleType) { case 1:// 暂停任务 scheduler.pauseJob(jobKey); break; case 2:// 恢复任务 scheduler.resumeJob(jobKey); break; case 3:// 删除任务 scheduler.deleteJob(jobKey); break; } } catch (Exception e) { e.printStackTrace(); } } public static void startJobs() { try { // 启动 if (!scheduler.isShutdown()) { scheduler.start(); } } catch (Exception e) { e.printStackTrace(); } } public static void shutDownJobs() { try { if (!scheduler.isShutdown()) { scheduler.shutdown(); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { //模拟读取 String [] clas ={"test.TestJob2","test.TestJob"}; String [] crons ={"0/5 * * * * ?","0/1 * * * * ?"}; for(int i=0;i<clas.length;i++){ Class<?> newClass = Class.forName(clas[i]); BaseJob job = (BaseJob) newClass.newInstance(); job.setCron(crons[i]); QuartzUtil.addJob(job); } }}
package test;import java.util.UUID;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;/** * BaseJob <br> * Date: 2016年6月22日 <br> * Copyright (c) 2016 xyw10000@163.com <br> * * @author xuyw */public abstract class BaseJob implements Job { private String jobName = UUID.randomUUID().toString().replaceAll("-", ""); private String groupName = UUID.randomUUID().toString().replaceAll("-", ""); private String cron = "0 30 10 ? * 6L 2015-2016";// 2015年至2016年的每月的最后一个星期五10:30触发一次事件 /** 任务状态 0停用 1启用 2删除 */ private String jobStatus; /** 任务描述 */ private String desc; abstract void doJob(JobExecutionContext context); @Override public void execute(JobExecutionContext context) throws JobExecutionException { doJob(context); } public String getJobName() { return jobName; } public void setJobName(String jobName) { this.jobName = jobName; } public String getGroupName() { return groupName; } public void setGroupName(String groupName) { this.groupName = groupName; } public String getCron() { return cron; } public void setCron(String cron) { this.cron = cron; } public String getJobStatus() { return jobStatus; } public void setJobStatus(String jobStatus) { this.jobStatus = jobStatus; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; }}
package test;import org.quartz.JobExecutionContext;public class TestJob extends BaseJob { @Override void doJob(JobExecutionContext context) { System.err.println("-------我是job1执行了-----------"); }}
0 0
- Quartz 工具类
- Quartz工具类
- Quartz工具类
- Quartz操作工具类
- 定时工具 quartz
- quartz定时器工具
- Quartz Cron 生成工具
- quartz-2.2.1定制工具类,方便nutz使用js配置quartz
- quartz工具类实现动态配置定时任务
- 作业调度工具Quartz简介
- Quartz定时器在线调试工具
- java 调度工具之 Quartz
- java定时调度工具quartz
- 使用Quartz进行动态添加、修改和删除Job的工具类
- 推荐一个Quartz Cron 生成器工具
- Quartz---Java定时任务调度工具
- java定时任务调度工具-quartz
- 定时任务调度工具之Quartz(一)
- JAVA QUEUE 队列 使用
- firstChild.nodeValue 和 lastChild.nodeValue
- 文章标题
- 运用通知实现点击非键盘处回收键盘
- 自定义Switch 控件textOn和textOff字体大小
- Quartz 工具类
- 2 的 n 次幂
- oracle虚拟机共享文件夹设置
- iOS--真机调试错误解决:Installation of apps is prohibited by a policy on the device
- 城市列表
- sparkRDD操作
- Android SDK下载和更新
- Xcode工具栏不显示
- iOS 有关环信 移动客服