如何在java中使用quartz

如题所述

在java中使用quartz
/** *//**
* 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
* @param jobName 任务名
* @param job 任务
* @param time 时间设置,参考quartz说明文档
* @throws SchedulerException
* @throws ParseException
*/
public static void addJob(String jobName,Job job,String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任务名,任务组,任务执行类
//触发器
CronTrigger trigger =
new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组
trigger.setCronExpression(time);//触发器时间设定
sched.scheduleJob(jobDetail,trigger);
//启动
if(!sched.isShutdown())
sched.start();
}

/** *//**
* 添加一个定时任务
* @param jobName 任务名
* @param jobGroupName 任务组名
* @param triggerName 触发器名
* @param triggerGroupName 触发器组名
* @param job 任务
* @param time 时间设置,参考quartz说明文档
* @throws SchedulerException
* @throws ParseException
*/
public static void addJob(String jobName,String jobGroupName,
String triggerName,String triggerGroupName,
Job job,String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任务名,任务组,任务执行类
//触发器
CronTrigger trigger =
new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组
trigger.setCronExpression(time);//触发器时间设定
sched.scheduleJob(jobDetail,trigger);
if(!sched.isShutdown())
sched.start();
}

/** *//**
* 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
* @param jobName
* @param time
* @throws SchedulerException
* @throws ParseException
*/
public static void modifyJobTime(String jobName,String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
Trigger trigger = sched.getTrigger(jobName,TRIGGER_GROUP_NAME);
if(trigger != null){
CronTrigger ct = (CronTrigger)trigger;
ct.setCronExpression(time);
sched.resumeTrigger(jobName,TRIGGER_GROUP_NAME);
}
}

/** *//**
* 修改一个任务的触发时间
* @param triggerName
* @param triggerGroupName
* @param time
* @throws SchedulerException
* @throws ParseException
*/
public static void modifyJobTime(String triggerName,String triggerGroupName,
String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
Trigger trigger = sched.getTrigger(triggerName,triggerGroupName);
if(trigger != null){
CronTrigger ct = (CronTrigger)trigger;
//修改时间
ct.setCronExpression(time);
//重启触发器
sched.resumeTrigger(triggerName,triggerGroupName);
}
}

/** *//**
* 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
* @param jobName
* @throws SchedulerException
*/
public static void removeJob(String jobName)
throws SchedulerException{
Scheduler sched = sf.getScheduler();
sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止触发器
sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除触发器
sched.deleteJob(jobName,JOB_GROUP_NAME);//删除任务
}

/** *//**
* 移除一个任务
* @param jobName
* @param jobGroupName
* @param triggerName
* @param triggerGroupName
* @throws SchedulerException
*/
public static void removeJob(String jobName,String jobGroupName,
String triggerName,String triggerGroupName)
throws SchedulerException{
Scheduler sched = sf.getScheduler();
sched.pauseTrigger(triggerName,triggerGroupName);//停止触发器
sched.unscheduleJob(triggerName,triggerGroupName);//移除触发器
sched.deleteJob(jobName,jobGroupName);//删除任务
}
温馨提示:内容为网友见解,仅供参考
无其他回答

如何用编程方式(而非xml配置)配置quartz调度器?
使用Java编程API配置Quartz调度器涉及几个关键步骤。首先,创建SchedulerFactory实例并初始化Scheduler。接着,定义任务(Job)和触发器(Trigger)。最后,将这些组件注册到Scheduler实例上并启动调度。编程API配置相较于使用Spring Boot的@Scheduled注解或Java EE的@Schedule注解更为复杂,但提供了更多定制选项和...

如何在java中使用quartz
添加一个定时任务,使用默认的任务组名,触发器名,触发器组名 param jobName 任务名 param job 任务 param time 时间设置,参考quartz说明文档 throws SchedulerException throws ParseException \/ public static void addJob(String jobName,Job job,String time)throws SchedulerException, ParseExcepti...

深入Quartz,更优雅地管理你的定时任务
Quartz支持通过时间间隔或Cron表达式定义定时任务,借助SimpleTrigger或CronTrigger实现。在SpringBoot项目中,通过引入依赖、创建Job类、构建Scheduler和Trigger,即可轻松完成定时任务的配置与执行。使用Quartz时,应注意任务执行是异步的,因此需通过TimeUnit.SECONDS.sleep()保持主线程运行,确保定时任务持续执行。...

java quartz
Quartz依赖一套松耦合的线程池管理部件来管理线程环境。实操例子:package cn.edu.gdut.quartz;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class HelloQuartz implements Job { public void execute(JobExecutionContext arg0) throws JobExecutionE...

SpringBoot 整合 Quartz 实现分布式调度
重新设置Quartz数据连接池,推荐使用Driud数据连接池。编写Job具体任务类。编写Quartz服务层接口。编写Controller服务。服务接口测试。注册监听器(可选)。采用项目数据源(可选)。在实际部署中,项目通常会集群部署。为了确保与正式环境一致,我们可以通过新建多个相同的项目来测试Quartz在集群环境下的分布式调度...

怎么用quartz控制任务的执行顺序
我是用的C#,相信JAVA中也存在类似的功能:1、设置需要在上一个job执行完成后继续执行的job的 StoreDurably(true)var job1 = JobBuilder.Create<TestJob>().WithIdentity(jobKey1).Build();var job2 = JobBuilder.Create<TestJob>().WithIdentity(jobKey2) .StoreDurably(true).Build();var job...

Java中定时任务quartz如何将历史数据写入新表
我建议的做法是在数据库中建一些Quartz的表,MySQL的建、删表脚本,最主要的修改是quartz.properties,如果你使用的是其他数据库,可以下载Quartz的distribution,在\\docs\\dbTables下。然后我们可以启动Bootstrap类,注册、运行定时任务。你可以发现MySQL的表中已经有此定时任务的记录了。然后你可以停止Bootstrap...

SpringBoot 整合 Quartz 实现 JAVA 定时任务的动态配置
动态配置定时任务,主要解决在应用运行中调整任务时间、新增或暂停任务的问题。传统方式修改XML配置后需重启应用,操作繁琐且影响应用稳定性。使用Quartz与SpringBoot结合,可在运行时动态管理任务,提高灵活性。通过SpringBoot框架,简化配置流程,实现不停机动态添加、暂停、删除和立即触发任务的功能。具体步骤...

定时器(quartz 一)
通过quartz.properties设置misfireThreshold的值 这样再运行,发现withMisfireHandlingInstructionDoNothing策略生效了。2、withMisfireHandlingInstructionFireAndProceed策略:错过立即执行 5、日历(calendar)1、可以在具体的时间点执行一次 2、可以按照指定间隔时间重复若干次 1、使用cron表达式触发 , 代表并且,如果...

在Java中如何设置一个定时任务,在每天的一个时间点自动执行一个特定的...
Quartz定时机制 首先导入jar包到程序内 quartz-all-1.6.0.jar 然后创建一个XML TimeConfig.xml 名字可以自己定义 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-\/\/SPRING\/\/DTD BEAN\/\/EN""http:\/\/www.springframework.org\/dtd\/spring-beans.dtd"> <beans> <bean ...

相似回答