Job实例是实现了Job接口的类,只覆写一个execute执行方法。JobDetail为Job实例提供了许多设置属性,一级JobDataMap成员属性,它用来存储特定Job实例的状态信息,调度器需要借助JobDetail对象添加Job实例。
Job的生命周期:每次调度完job时,在执行execute方法之前创建新的job实例;当调用完成后,job实例对象会被垃圾回收。
以Hello World 的Job为例
public class HelloJob implements Job {
public void execute(JobExecutionContext arg0) throws JobExecutionException {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sf.format(new Date()));
System.out.println("This is hello job……");
}
}
获取Job实例的属性信息
public class TestHelloJob
{
public static void main( String[] args ) throws SchedulerException
{
/*创建JobDetail实例,并与HelloJob绑定;Job的名字是myjob,隶属于job_group组*/
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("myjob", "job_group")
.build();
/*获取Job的属性*/
System.out.println("jobDetail's name : " + jobDetail.getKey().getName());
System.out.println("jobDetail's group : " + jobDetail.getKey().getGroup());
System.out.println("jobDetail's jobclass : " + jobDetail.getJobClass().getName());
/*创建Trriger实例,指定Job每隔3秒钟执行一次*/
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("mytrigger", "trigger_group")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(3)
.repeatForever())
.build();
/*创建SchedulerFactory实例,把jobDetail与trigger绑定在一起*/
SchedulerFactory factory = new StdSchedulerFactory();
Scheduler scheduler = factory.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger);
}
}
运行测试方法,,输出
jobDetail's name : myjob
jobDetail's group : job_group
jobDetail's jobclass : com.lzj.quartz.Demo.HelloJob
--------------------------------------------
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2018-04-01 17:33:02
This is hello job……
2018-04-01 17:33:05
This is hello job……
2018-04-01 17:33:08
This is hello job……
2018-04-01 17:33:11
This is hello job……
获取的Hello World 的Job的部分属性为
jobDetail's name : myjob
jobDetail's group : job_group
jobDetail's jobclass : com.lzj.quartz.Demo.HelloJob