java手动添加定时任务_动态添加、修改和删除定时任务

1 packagecom.datcent.downloadCSV.quartzManager;2

3 importorg.quartz.CronTrigger ;4 importorg.quartz.JobDetail ;5 importorg.quartz.Scheduler ;6

7 /**

8 *@author作者xujingyang. E-mail:xjy06@foxmail.com9 *@version创建时间:2018年1月17日 下午3:28:1410 * @类说明: Quartz调度管理器11 */

12 public classQuartzManager {13 private static String JOB_GROUP_NAME = "EXTJWEB_JOBGROUP_NAME";14 private static String TRIGGER_GROUP_NAME = "EXTJWEB_TRIGGERGROUP_NAME";15

16 /**

17 * @Description: 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名18 *19 *@paramsched20 * 调度器21 *22 *@paramjobName23 * 任务名24 *@paramcls25 * 任务26 *@paramtime27 * 时间设置,参考quartz说明文档28 *29 * @Title: QuartzManager.java30 */

31 public static void addJob(Scheduler sched, String jobName, @SuppressWarnings("rawtypes") Class cls, String time) {32 try{33 JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, cls);//任务名,任务组,任务执行类34 //触发器

35 CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组

36 trigger.setCronExpression(time);//触发器时间设定

37 sched.scheduleJob(jobDetail, trigger);38 //启动

39 if (!sched.isShutdown()) {40 sched.start();41 }42 } catch(Exception e) {43 throw newRuntimeException(e);44 }45 }46

47 /**

48 * @Description: 添加一个定时任务49 *50 *@paramsched51 * 调度器52 *53 *@paramjobName54 * 任务名55 *@paramjobGroupName56 * 任务组名57 *@paramtriggerName58 * 触发器名59 *@paramtriggerGroupName60 * 触发器组名61 *@paramjobClass62 * 任务63 *@paramtime64 * 时间设置,参考quartz说明文档65 *66 * @Title: QuartzManager.java67 */

68 public static voidaddJob(Scheduler sched, String jobName, String jobGroupName, String triggerName,69 String triggerGroupName, @SuppressWarnings("rawtypes") Class jobClass, String time) {70 try{71 JobDetail jobDetail = new JobDetail(jobName, jobGroupName, jobClass);//任务名,任务组,任务执行类72 //触发器

73 CronTrigger trigger = new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组

74 trigger.setCronExpression(time);//触发器时间设定

75 sched.scheduleJob(jobDetail, trigger);76 } catch(Exception e) {77 throw newRuntimeException(e);78 }79 }80

81 /**

82 * @Description: 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)83 *84 *@paramsched85 * 调度器86 *@paramjobName87 *@paramtime88 *89 * @Title: QuartzManager.java90 */

91 @SuppressWarnings("rawtypes")92 public static voidmodifyJobTime(Scheduler sched, String jobName, String time) {93 try{94 CronTrigger trigger =(CronTrigger) sched.getTrigger(jobName, TRIGGER_GROUP_NAME);95 if (trigger == null) {96 return;97 }98 String oldTime =trigger.getCronExpression();99 if (!oldTime.equalsIgnoreCase(time)) {100 JobDetail jobDetail =sched.getJobDetail(jobName, JOB_GROUP_NAME);101 Class objJobClass =jobDetail.getJobClass();102 removeJob(sched, jobName);103 addJob(sched, jobName, objJobClass, time);104 }105 } catch(Exception e) {106 throw newRuntimeException(e);107 }108 }109

110 /**

111 * @Description: 修改一个任务的触发时间112 *113 *@paramsched114 * 调度器 *115 *@paramsched116 * 调度器117 *@paramtriggerName118 *@paramtriggerGroupName119 *@paramtime120 *121 * @Title: QuartzManager.java122 */

123 public static voidmodifyJobTime(Scheduler sched, String triggerName, String triggerGroupName, String time) {124 try{125 CronTrigger trigger =(CronTrigger) sched.getTrigger(triggerName, triggerGroupName);126 if (trigger == null) {127 return;128 }129 String oldTime =trigger.getCronExpression();130 if (!oldTime.equalsIgnoreCase(time)) {131 CronTrigger ct =(CronTrigger) trigger;132 //修改时间

133 ct.setCronExpression(time);134 //重启触发器

135 sched.resumeTrigger(triggerName, triggerGroupName);136 }137 } catch(Exception e) {138 throw newRuntimeException(e);139 }140 }141

142 /**

143 * @Description: 移除一个任务(使用默认的任务组名,触发器名,触发器组名)144 *145 *@paramsched146 * 调度器147 *@paramjobName148 *149 * @Title: QuartzManager.java150 */

151 public static voidremoveJob(Scheduler sched, String jobName) {152 try{153 sched.pauseTrigger(jobName, TRIGGER_GROUP_NAME);//停止触发器

154 sched.unscheduleJob(jobName, TRIGGER_GROUP_NAME);//移除触发器

155 sched.deleteJob(jobName, JOB_GROUP_NAME);//删除任务

156 } catch(Exception e) {157 throw newRuntimeException(e);158 }159 }160

161 /**

162 * @Description: 移除一个任务163 *164 *@paramsched165 * 调度器166 *@paramjobName167 *@paramjobGroupName168 *@paramtriggerName169 *@paramtriggerGroupName170 *171 * @Title: QuartzManager.java172 */

173 public static voidremoveJob(Scheduler sched, String jobName, String jobGroupName, String triggerName,174 String triggerGroupName) {175 try{176 sched.pauseTrigger(triggerName, triggerGroupName);//停止触发器

177 sched.unscheduleJob(triggerName, triggerGroupName);//移除触发器

178 sched.deleteJob(jobName, jobGroupName);//删除任务

179 } catch(Exception e) {180 throw newRuntimeException(e);181 }182 }183

184 /**

185 * @Description:启动所有定时任务186 *187 *@paramsched188 * 调度器189 *190 * @Title: QuartzManager.java191 */

192 public static voidstartJobs(Scheduler sched) {193 try{194 sched.start();195 } catch(Exception e) {196 throw newRuntimeException(e);197 }198 }199

200 /**

201 * @Description:关闭所有定时任务202 *203 *204 *@paramsched205 * 调度器206 *207 *208 * @Title: QuartzManager.java209 */

210 public static voidshutdownJobs(Scheduler sched) {211 try{212 if (!sched.isShutdown()) {213 sched.shutdown();214 }215 } catch(Exception e) {216 throw newRuntimeException(e);217 }218 }219 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值