Quartz简单入门教学
Quartz是我们的任务调度框架,在JAVA中简单的任务调度我们可以使用Timer来进行,但是复杂的调度我们就选择使用Quartz。
Quartz是一个完全由java编写的开源作业调度框架。尽管Quartz框架整合了许多额外功能, 但就其简易形式看,你会发现它易用得简直让人受不了!简单地创建一个实现org.quartz.Job接口的java类。Job接口包含唯一的方法:
public void execute(JobExecutionContext context)
throws JobExecutionException;
在你的Job接口实现类里面,添加一些逻辑到execute()方法。一旦你配置好Job实现类并设定好调度时间表,Quartz将密切注意剩余时间。当调度程序确定该是通知你的作业的时候,Quartz框架将调用你Job实现类(作业类)上的execute()方法并允许做它该做的事情。无需报告任何东西给调度器或调用任何特定的东西。仅仅执行任务和结束任务即可。如果配置你的作业在随后再次被调用,Quartz框架将在恰当的时间再次调用它。
第一步
Quartz官网下载,下载要挂vpn可以买也可以用淘宝镜像,这里就不讲解了。
然后下载那个最新的就好了,下载完成以后解压。
第二步
在我们的Java Project中新建一个文件夹,名字是lib也可以是别的,比如下面这样
然后解压我们下载的压缩包
找到Quartz的lib文件夹,把里面的文件全都ctrl+c然后ctrl+v 到我们的lib中
然后右击lib,BuildPath,就搭建好了。
第三步
在我们的Quartz文件夹中找到example,具体路径如下
随便打开一个example
复制粘贴到一个包里
记得把包名改成我们现在这个包的名字
然后就可以跑了,跑了之后会发现有提示
其实没什么关系,这是一个日志文件,但是我们还是需要导入一下
log4j文件位置在这个地方
复制粘贴到我们的Project的src下就可以了
现在再跑,就成功了,接下来可以把其他几个examples都琢磨一下,也可以都导入进来跑一跑,下面贴上修改的代码。
public class HelloJob implements Job {
public HelloJob() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("------start------");
System.out.println("Hello World!--"+new Date());
System.out.println("-------end-------");
}
}
import static org.quartz.DateBuilder.evenSecondDateAfterNow;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
public class Quartzz {
public void run() throws Exception {
// 1、创建scheduler工厂
SchedulerFactory sf = new StdSchedulerFactory();
// 2、从工厂中获取调度器
Scheduler sched = sf.getScheduler();
// 3、创建JobDetai
JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();
// 时间
Date runTime = evenSecondDateAfterNow();
// 4、触发器条件
Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime)
.withSchedule(simpleSchedule().withIntervalInSeconds(2)
.withRepeatCount(3)).build();
// 5、注册任务和触发条件
sched.scheduleJob(job, trigger);
// 6、启动
sched.start();
try {
// 5秒后停止
Thread.sleep(500L * 1000L);
// executing...
} catch (Exception e) {
//
}
}
public static void main(String[] args) throws Exception {
Quartzz example = new Quartzz();
example.run();
}
}
干净简洁了许多。
over~