Quartz是一个完全由java编写的开源作业调度框架。这是第一次学习,那就简单学习一下定时任务的开始和结束。
需要的jar包
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.3</version>
</dependency>
1、首先需要创建一个需要定时执行的方法
package com.htwl.waste_api.Test;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.util.Date;
/**
* @author jiahailin
* @Description:
*/
public class HelloJob implements Job {
public HelloJob(){
}
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("你好,quartz:"+new Date());
}
}
这里方法要实现Job接口,并且要有一个空的构造方法(不写的话默认有一个空构造方法,不管写不写,要保证有)。
2、然后创建一个任务调度器
package com.htwl.waste_api.Test;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.util.Date;
/**
* @author jiahailin
* @Description:
*/
public class FirstTest {
public void run(){
SchedulerFactory sf = new StdSchedulerFactory();
try {
//先获得scheduler的引用
Scheduler sche = sf.getScheduler();
//搞一个执行时间,这个时间比现在时间多一分钟
Date runTime = DateBuilder.evenMinuteDate(new Date());
//定义一个job,并且让job与我们的HelloJob产生关联
JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("jobName1","jobGroup1").build();
//定义触发器,让job在我们定义的时间触发
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("jobTrigger1","jobGroup1").startAt(runTime).build();
//告诉quartz使用我们的触发器来安排运行job
sche.scheduleJob(job,trigger);
System.out.println(job.getKey() + " will run at: " + runTime);
//启动scheduler(在scheduler启动之前,实际上无法运行任何东西)
sche.start();
System.out.println("------- Waiting 65 seconds... -------------");
//等一会,保证定时任务执行完成
try {
// wait 65 seconds to show job
Thread.sleep(65L * 1000L);
// executing...
} catch (Exception e) {
//
}
//关掉scheduler
System.out.println("------- Shutting Down ---------------------");
sche.shutdown(true);
System.out.println("------- Shutdown Complete -----------------");
} catch (SchedulerException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
FirstTest ft = new FirstTest();
ft.run();
}
}
完成了,怎么样,有没有发现很简单。