完成功能:一分钟之后调用Job
pom.xml文件配置
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
定义任务类
package com.quartz;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.util.Date;
/**
* @author Duoduo
* @version 1.0
* @date 2017/4/24 21:57
*/
public class SimpleJob implements Job {
@Override
public void execute(JobExecutionContext jobExeContext) throws JobExecutionException {
System.out.println("**********************************");
System.out.println(jobExeContext.getTrigger().toString()+" trigger time is :"+ (new Date()));
}
}
定义执行任务类
package com.quartz;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
/**
* @author Duoduo
* @version 1.0
* @date 2017/4/24 22:41
*/
public class SimpleExample {
public void run() throws Exception {
Logger log = LoggerFactory.getLogger(SimpleExample.class);
log.info("------- Initializing ----------------------");
// First we must get a reference to a scheduler
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
log.info("------- Initialization Complete -----------");
// computer a time that is on the next round minute
Date runTime = DateBuilder.evenMinuteDate(new Date());
log.info("------- Scheduling Job -------------------");
// define the job and tie it to our HelloJob class
JobDetail job = JobBuilder.newJob(SimpleJob.class).withIdentity("job1", "group1").build();
// Trigger the job to run on the next round minute
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();
// Tell quartz to schedule the job using our trigger
sched.scheduleJob(job, trigger);
log.info(job.getKey() + " will run at: " + runTime);
// Start up the scheduler (nothing can actually run until the
// scheduler has been started)
sched.start();
log.info("------- Started Scheduler -----------------");
// wait long enough so that the scheduler as an opportunity to
// run the job!
log.info("------- Waiting 65 seconds... -------------");
try {
// wait 65 seconds to show job
Thread.sleep(65L * 1000L);
// executing...
} catch (Exception e) {
//
}
// shut down the scheduler
log.info("------- Shutting Down ---------------------");
sched.shutdown(true);
log.info("------- Shutdown Complete -----------------");
}
}
测试结果如下:
2017-04-24 23:19:58,839 INFO [main] (SimpleExample.java:20) - ------- Initializing ----------------------
2017-04-24 23:19:58,907 INFO [main] (StdSchedulerFactory.java:1184) - Using default implementation for ThreadExecutor
2017-04-24 23:19:58,916 INFO [main] (SimpleThreadPool.java:268) - Job execution threads will use class loader of thread: main
2017-04-24 23:19:58,932 INFO [main] (SchedulerSignalerImpl.java:61) - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2017-04-24 23:19:58,934 INFO [main] (QuartzScheduler.java:240) - Quartz Scheduler v.2.2.1 created.
2017-04-24 23:19:58,935 INFO [main] (RAMJobStore.java:155) - RAMJobStore initialized.
2017-04-24 23:19:58,936 INFO [main] (QuartzScheduler.java:305) - Scheduler meta-data: Quartz Scheduler (v2.2.1) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
2017-04-24 23:19:58,936 INFO [main] (StdSchedulerFactory.java:1339) - Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
2017-04-24 23:19:58,936 INFO [main] (StdSchedulerFactory.java:1343) - Quartz scheduler version: 2.2.1
2017-04-24 23:19:58,936 INFO [main] (SimpleExample.java:26) - ------- Initialization Complete -----------
2017-04-24 23:19:58,937 INFO [main] (SimpleExample.java:31) - ------- Scheduling Job -------------------
2017-04-24 23:19:58,948 INFO [main] (SimpleExample.java:41) - group1.job1 will run at: Mon Apr 24 23:20:00 CST 2017
2017-04-24 23:19:58,948 INFO [main] (QuartzScheduler.java:575) - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
2017-04-24 23:19:58,948 INFO [main] (SimpleExample.java:47) - ------- Started Scheduler -----------------
2017-04-24 23:19:58,948 INFO [main] (SimpleExample.java:51) - ------- Waiting 65 seconds... -------------
2017-04-24 23:20:00,022 INFO [DefaultQuartzScheduler_Worker-1] (SimpleJob.java:21) - **********************************
2017-04-24 23:20:00,028 INFO [DefaultQuartzScheduler_Worker-1] (SimpleJob.java:22) - Job execute Trigger 'group1.trigger1': triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: null trigger time is :Mon Apr 24 23:20:00 CST 2017
2017-04-24 23:21:03,954 INFO [main] (SimpleExample.java:61) - ------- Shutting Down ---------------------
2017-04-24 23:21:03,954 INFO [main] (QuartzScheduler.java:694) - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
2017-04-24 23:21:03,955 INFO [main] (QuartzScheduler.java:613) - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
2017-04-24 23:21:04,424 INFO [main] (QuartzScheduler.java:771) - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
2017-04-24 23:21:04,424 INFO [main] (SimpleExample.java:63) - ------- Shutdown Complete -----------------
Process finished with exit code 0