一 配置文件
# 配置主调度器属性
org.quartz.scheduler.instanceName=QuartzScheduler
org.quartz.scheduler.instanceId=AUTO
# 配置线程池
# Quartz线程池的实现类
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
# 线程池的线程数量
org.quartz.threadPool.threadCount=1
# 线程池里线程的优先级
org.quartz.threadPool.threadPriority=5
# 配置作业存储
org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore
二 作业
package lee;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.util.*;
public class TestJob implements Job
{
// 判断作业是否执行的旗标
private boolean isRunning = false;
public void execute(JobExecutionContext context)
throws JobExecutionException
{
// 如果作业没有被调度
if (!isRunning)
{
System.out.println(new Date() + " 作业被调度。");
// 循环100次来模拟任务的执行
for (int i = 0; i < 100 ; i++)
{
System.out.println("作业完成" + (i + 1) + "%");
try
{
Thread.sleep(100);
}
catch (InterruptedException ex)
{
ex.printStackTrace();
}
}
System.out.println(new Date() + " 作业调度结束。");
}
// 如果作业正在运行,即使获得调度,也立即退出
else
{
System.out.println(new Date() + "任务退出");
}
}
}
三 测试类
package lee;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class MyQuartzServer {
public static void main(String[] args) {
MyQuartzServer server = new MyQuartzServer();
try {
server.startScheduler();
} catch (SchedulerException ex) {
ex.printStackTrace();
}
}
// 执行调度
private void startScheduler() throws SchedulerException {
// 使用工厂创建调度器实例
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 以Job实现类创建JobDetail实例
JobDetail jobDetail = JobBuilder.newJob(TestJob.class).withIdentity("fkJob").build();
// 创建Trigger对象,该对象代表一个简单的调度器
// 指定该任务被重复调度50次,每次间隔60秒
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(TriggerKey.triggerKey("fkTrigger", "fkTriggerGroup"))
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(60).repeatForever())
.startNow().build();
// 调度器将作业与trigger关联起来
scheduler.scheduleJob(jobDetail, trigger);
// 开始调度
scheduler.start();
}
}
四 测试结果
Mon Oct 07 15:50:52 CST 2019 作业被调度。
作业完成1%
作业完成2%
作业完成3%
作业完成4%
作业完成5%
作业完成6%
作业完成7%
作业完成8%
作业完成9%
作业完成10%
作业完成11%
作业完成12%
作业完成13%
作业完成14%
作业完成15%
作业完成16%
作业完成17%
作业完成18%
作业完成19%
作业完成20%
作业完成21%
作业完成22%
作业完成23%
作业完成24%
作业完成25%
作业完成26%
作业完成27%
作业完成28%
作业完成29%
作业完成30%
作业完成31%
作业完成32%
作业完成33%
作业完成34%
作业完成35%
作业完成36%
作业完成37%
作业完成38%
作业完成39%
作业完成40%
作业完成41%
作业完成42%
作业完成43%
作业完成44%
作业完成45%
作业完成46%
作业完成47%
作业完成48%
作业完成49%
作业完成50%
作业完成51%
作业完成52%
作业完成53%
作业完成54%
作业完成55%
作业完成56%
作业完成57%
作业完成58%
作业完成59%
作业完成60%
作业完成61%
作业完成62%
作业完成63%
作业完成64%
作业完成65%
作业完成66%
作业完成67%
作业完成68%
作业完成69%
作业完成70%
作业完成71%
作业完成72%
作业完成73%
作业完成74%
作业完成75%
作业完成76%
作业完成77%
作业完成78%
作业完成79%
作业完成80%
作业完成81%
作业完成82%
作业完成83%
作业完成84%
作业完成85%
作业完成86%
作业完成87%
作业完成88%
作业完成89%
作业完成90%
作业完成91%
作业完成92%
作业完成93%
作业完成94%
作业完成95%
作业完成96%
作业完成97%
作业完成98%
作业完成99%
作业完成100%
Mon Oct 07 15:51:02 CST 2019 作业调度结束。