• 开源定时任务框架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架构师之路”:


  • 相关阅读:
    小程序事件参数传递
    java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig
    SSM单元测试时出现:Failed to load ApplicationContext的一种可能解决办法
    Cannot resolve classpath entry: /Program Files/IBM/SQLLIB/java/db2java.zip
    python 批量重命名文件
    abp + vue 模板新建页面
    Git 新建版本库命令
    vi/vim 行删除操作
    abp angular 前端权限控制
    杨辉三角-python
  • 原文地址:https://www.cnblogs.com/woniu201/p/11694585.html
Copyright © 2020-2023  润新知