java中quartz_如何在java中使用quartz

如何在java中使用quartz

关注:277  答案:2  mip版

解决时间 2021-01-19 15:56

e6cb1a03ad541b3098697807b7bf1798.png

提问者孤独深渊

2021-01-18 23:51

如何在java中使用quartz

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家招人烦°惹人厌

2021-01-19 00:18

在java中使用quartz

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();

}

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();

}

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);

}

}

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);

}

}

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);//删除任务

}

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);//删除任务

}

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼白胡子大佬

2021-01-19 01:37

1.需要的jar包

实现定时任务 需要quartz-1.5.1.jar和commons-logging-1.1.jar。

2.定义定时任务配置类

该类主要进行定时任务时间的设置和设置对应的定时任务类。

import org.quartz.crontrigger;

import org.quartz.jobdetail;

import org.quartz.scheduler;

import org.quartz.impl.stdschedulerfactory;

public class test{

public static void cleanupjob() {

try {

jobdetail jobdetail = new jobdetail();

jobdetail.setname("cleanup");

jobdetail.setjobclass(printjob.class);

crontrigger trigger = new crontrigger();

trigger.setname("cleanuptrigger");

trigger.setjobname("cleanup");

trigger.setcronexpression("0/5 * * * * ?");

scheduler sch = stdschedulerfactory.getdefaultscheduler();

sch.schedulejob(jobdetail, trigger);

sch.start();

} catch (exception e) {

e.printstacktrace();

}

}

public static void modifyjobtime(string triggername, string time) {

system.out.println("modify~~~~~~~~~~~~~~~~");

try {

scheduler sched = stdschedulerfactory.getdefaultscheduler();

system.out.println("triggername " + triggername);

crontrigger trigger = (crontrigger) sched.gettrigger(triggername, scheduler.default_group);

if(trigger == null) {

return;

}

string oldtime = trigger.getcronexpression();

system.out.println("oldtime " + oldtime);

if (!oldtime.equalsignorecase(time)) {

system.out.println("time " + time);

// 修改时间

trigger.setcronexpression(time);

}

} catch (exception e) {

e.printstacktrace();

throw new runtimeexception(e);

}

}

public static void main(string[] args) {

cleanupjob();

modifyjobtime("cleanuptrigger", "0/2 * * * * ?");

}

}

3.定时任务类

该类主要定义定时任务执行的内容。

import java.text.simpledateformat;

import java.util.date;

import org.quartz.job;

import org.quartz.jobexecutioncontext;

import org.quartz.jobexecutionexception;

public class printjob implements job{

@override

public void execute(jobexecutioncontext arg0) throws jobexecutionexception {

simpledateformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss.sss");

string time = sdf.format(new date());

system.out.println("print job" + time);

}

}

4.输出结果

modify~~~~~~~~~~~~~~~~

triggername cleanuptrigger

oldtime 0/5 * * * * ?

time 0/2 * * * * ?

print job2014-12-03 17:06:40.031

print job2014-12-03 17:06:42.015

print job2014-12-03 17:06:44.016

print job2014-12-03 17:06:46.019

print job2014-12-03 17:06:48.019

print job2014-12-03 17:06:50.020

从输出的结果中可以看到,原本的定时任务为每5秒执行一次,但是由于后面对定时任务表达式做了修改,所以后来安照修改后的每2秒执行一次。

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

点此我要举报以上信息!

推荐资讯

大家都在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Quartz是一个开源的任务调度框架,可以用来实现定时任务、调度任务等功能。下面是使用Quartz定时器的步骤: 1. 导入Quartz依赖包:在项目的pom.xml文件添加Quartz的依赖包。 2. 创建Job类:创建一个实现了org.quartz.Job接口的类,该类实现需要定时执行的任务逻辑。 3. 创建Trigger:创建一个org.quartz.Trigger对象,用于指定定时任务的触发条件,如触发时间、重复次数等。 4. 创建Scheduler:创建一个org.quartz.Scheduler对象,用于管理定时任务的调度。 5. 将Job和Trigger添加到Scheduler:将Job和Trigger添加到Scheduler,使其开始执行定时任务。 下面是一个使用Quartz定时器的示例代码: ```java import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; public class QuartzTest { public static void main(String[] args) throws SchedulerException { // 创建一个JobDetail对象,指定定时执行的任务逻辑 JobDetail jobDetail = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build(); // 创建一个Trigger对象,指定定时执行的时间和重复次数 Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10).repeatForever()) .build(); // 创建一个Scheduler对象,用于管理定时任务的调度 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); // 将Job和Trigger添加到Scheduler,使其开始执行定时任务 scheduler.scheduleJob(jobDetail, trigger); // 启动Scheduler scheduler.start(); } } class MyJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { // 定时执行的任务逻辑 System.out.println("Hello Quartz!"); } } ``` 上述代码,创建了一个JobDetail对象和一个Trigger对象,并将它们添加到Scheduler,使其每隔10秒执行一次定时任务。执行的任务逻辑在MyJob类实现,简单输出了一句话。运行程序后,控制台会不断输出“Hello Quartz!”。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值