开源定时任务框架Quartz(一)

简介

 

QuartzOpenSymphony开源组织的一个开源项目,定时任务框架,纯Java语言实现,最新版本为2.3.0html

设计模式

Quartz中使用的设计模式以下:java

1.Builder模式设计模式

2.Factory模式框架

3.组件模式ide

4.链式模式ui

体系结构

1.调度器:schedulerspa

2.任务:JobDetail设计

3.触发器:Trigger,包括SimpleTrigger和CronTriggercode

第一个Quartz程序

实现每隔1秒打印一个Hello Worlderorm

1.建立Maven项目,添加依赖:

<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.0</version>
</dependency>

 

2.建立HelloWorldJob类

 

package quartz;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * created by Java-Road
 * created in 2018/5/26
 */
public class HelloWorldJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        String strTime = new SimpleDateFormat("HH-mm-ss").format(new Date());
        System.out.println( strTime + ":Hello World!");
    }
}

3.建立MyScheduler类

package quartz;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

/**
 * created by Java-Road
 * created in 2018/5/26
 */
public class MyScheduler {
    public static void main(String[] args) throws SchedulerException {
        //建立调度器Schedule
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();

        //建立JobDetail实例,并与HelloWordlJob类绑定
        JobDetail jobDetail = JobBuilder.newJob(HelloWorldJob.class).withIdentity("job1", "jobGroup1")
                .build();

        //建立触发器Trigger实例(当即执行,每隔1S执行一次)
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "triggerGroup1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(1).repeatForever())
                .build();

        //开始执行
        scheduler.scheduleJob(jobDetail, trigger);
        scheduler.start();
    }
}

 

讨论群:611262656,一键加群:点击加群