java quartz调度程序在特定时间运行
例如,我想编写一个Java程序,在每天上午12点打印“Hello World”,如何使用Quartz调度器实现这一点java quartz调度程序在特定时间运行,java,Java,例如,我想编写一个Java程序,在每天上午12点打印“Hello World”,如何使用Quartz调度器实现这一点 Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0); trigger.setName("trigger1"); trigger.setGroup("group1"); 像这样?我应该将打印“hello world”方法放在哪里?您必须通过实现作业接口并提供执行方法的实现来创建自定义作业。在执行方法中,您可以打印“hello
Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0);
trigger.setName("trigger1");
trigger.setGroup("group1");
像这样?我应该将打印“hello world”方法放在哪里?您必须通过实现作业接口并提供执行方法的实现来创建自定义作业。在执行方法中,您可以打印“hello world”。然后你可以这样安排你的工作
scheduler.scheduleJob(job, trigger);
有关分步详细信息,请参阅此链接:
您可以使用表达式来计划作业的执行。e、 g:
public static class HelloJob implements Job {
@Override
public void execute(JobExecutionContext ctx) throws JobExecutionException {
System.out.println("Hello World");
}
}
public static void main(String[] args) throws SchedulerException {
String exp = "0 0 0 1/1 * ? *";
SchedulerFactory factory = new StdSchedulerFactory();
Scheduler scheduler = factory.getScheduler();
scheduler.start();
JobDetail job = JobBuilder.newJob(HelloJob.class).build();
Trigger trigger = TriggerBuilder.newTrigger()
.startNow()
.withSchedule(
CronScheduleBuilder.cronSchedule(exp))
.build();
scheduler.scheduleJob(job, trigger);
}
有关构建另一个表达式的信息,请参见。e、 g.
0 0/1*1/1**代码>每分钟查看一次输出。另请参见。您可以为此创建cron表达式。要进行quartz作业,您需要具有以下对象
工作
将与作业关联的任务
最后创建一个触发器并将作业与触发器关联
两种类型的触发器
简单的触发器,可以控制作业,可以每分钟或10分钟运行一次,以此类推。您还可以有其他参数
initial delay - to kick off
repeatcount - no of times the job should be executes, if -1 then job will be executed infinitely
在您的情况下,您可以使用cron触发器,因为您希望每天上午12点运行
有关更多详细信息和示例程序,请查看下面的链接
关于quartz cron表达式,请参阅quartz文档
下载quartz Jar放入lib文件夹构建项目
创建要从中计划任务的类(作业)
import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job {
private Logger log = Logger.getLogger(MyJob.class);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
log.debug("Hi....");
System.out.println("Corn Executing.....");
}
}
为计划任务创建类
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class JobScheduler {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("myjob").build();
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(30).repeatForever()).build();
SchedulerFactory schFactory = new StdSchedulerFactory();
Scheduler scheduler = schFactory.getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}catch (SchedulerException e) {
e.printStackTrace();
}
}
}
甚至比提供cron表达式更简单,您可以使用方法。只需将CronScheduleBuilder.cronSchedule(exp)
替换为CronScheduleBuilder.dailyAtHourAndMinute(0,0)
。事实上,它会将小时和分钟转换为等效的cron表达式。如何添加我的方法?不上课