java quartz动态的添加任务_Quartz1.8.6 任务调度之动态添加、修改和删除任务

Quartz框架可以动态的添加、删除作业任务,也可以修改作业的时间。下边我们就通过例子更清楚的知道该如何使用。

实例:

package com.what21.quartz1.cron.demo2;

public class QuartzDemo {

/**

* @param args

* @throws Exception

*/

public static void main(String[] args) throws Exception{

//==========添加任务=========

String expression = "0/2 * * * * ?";

QuartzManager.addJob("demoJob", expression, DemoJob.class);

System.out.println("***********已添加任务***********");

Thread.sleep(10 * 1000);

//==========修改任务=========

String expression2 = "0/5 * * * * ?";

QuartzManager.modifyJobExpression("demoJob", expression2);

System.out.println("***********已修改任务***********");

Thread.sleep(10 * 1000);

//==========删除任务=========

QuartzManager.removeJob("demoJob");

System.out.println("***********已删除任务***********");

Thread.sleep(10 * 1000);

//==========添加任务=========

String expression3 = "0/2 * * * * ?";

QuartzManager.addJob("demoJob", expression3, DemoJob.class);

System.out.println("***********已添加任务***********");

Thread.sleep(10 * 1000);

QuartzManager.shutdownJobs();

}

}

package com.what21.quartz1.cron.demo2;

import org.quartz.CronTrigger;

import org.quartz.Job;

import org.quartz.JobDetail;

import org.quartz.Scheduler;

import org.quartz.SchedulerFactory;

import org.quartz.impl.StdSchedulerFactory;

public class QuartzManager {

private static SchedulerFactory schedulerFactory = new StdSchedulerFactory();

static final String jobGroupName = "jobGroup";

static final String triggerGroupName = "triggerGroup";

/**

* 添加任务

*

* @param name

* @param expression

* @param clazz

*/

public static void addJob(String name, String expression,

Class extends Job> clazz) {

try {

Scheduler scheduler = schedulerFactory.getScheduler();

// 任务名,任务组,任务执行类

JobDetail jobDetail = new JobDetail(name, jobGroupName, clazz);

// 触发器名,触发器组

CronTrigger trigger = new CronTrigger(name, triggerGroupName);

// 触发器表达式

trigger.setCronExpression(expression);

scheduler.scheduleJob(jobDetail, trigger);

// 启动

if (!scheduler.isShutdown()) {

scheduler.start();

}

} catch (Exception e) {

throw new RuntimeException(e);

}

}

/**

* 移除任务

*

* @param name

*/

public static void removeJob(String name) {

try {

Scheduler scheduler = schedulerFactory.getScheduler();

// 停止触发器

scheduler.pauseTrigger(name, triggerGroupName);

// 移除触发器

scheduler.unscheduleJob(name, triggerGroupName);

// 删除任务

scheduler.deleteJob(name, jobGroupName);

} catch (Exception e) {

throw new RuntimeException(e);

}

}

/**

* 修改任务

*

* @param name

* @param expression

*/

@SuppressWarnings("unchecked")

public static void modifyJobExpression(String name, String expression) {

try {

Scheduler scheduler = schedulerFactory.getScheduler();

JobDetail jobDetail = scheduler.getJobDetail(name, jobGroupName);

if(jobDetail != null){

removeJob(name);

addJob(name, expression,jobDetail.getJobClass());

}else{

throw new RuntimeException("Task" + name +"does not exist.");

}

} catch (Exception e) {

throw new RuntimeException(e);

}

}

/**

* 停止

*/

public static void shutdownJobs() {

try {

Scheduler sched = schedulerFactory.getScheduler();

if (!sched.isShutdown()) {

sched.shutdown();

}

} catch (Exception e) {

throw new RuntimeException(e);

}

}

}

package com.what21.quartz1.cron.demo2;

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

public class DemoJob implements Job {

@Override

public void execute(JobExecutionContext context) throws JobExecutionException {

System.out.println(">>>>>>>>>>>>>>><<<<<<<<<<<<<<

}

}

执行结果:

***********已添加任务***********

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

***********已修改任务***********

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

***********已删除任务***********

***********已添加任务***********

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

>>>>>>>>>>>>>>><<<<<<<<<<<<<<<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值