当前位置: 首页 > 工具软件 > Quartz EX > 使用案例 >

Quartz实战

赫连晋
2023-12-01

一 配置文件

# 配置主调度器属性
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  作业调度结束。

 

 类似资料: