zoukankan      html  css  js  c++  java
  • 开源定时任务框架Quartz(一)

    简介

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

    设计模式

    Quartz中使用的设计模式如下:

    1.Builder模式

    2.Factory模式

    3.组件模式

    4.链式模式

    体系结构

    1.调度器:scheduler

    2.任务:JobDetail

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

    第一个Quartz程序

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

    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,一键加群:点击加群

    更多技术文章请关注微信公众号“Java架构师之路”:


  • 相关阅读:
    selector
    c# word 转pdf 导出失败,因为此功能尚未安装
    Jquery
    Enter
    获取当前地址的参数值
    无法向会话状态服务器发出会话状态请求。
    Ajax 跨域请求
    JsonResult 处理时间格式
    VS2013打开项目提示"Asp.net4.5未在web服务器上注册
    死锁
  • 原文地址:https://www.cnblogs.com/woniu201/p/11694585.html
Copyright © 2011-2022 走看看