zoukankan      html  css  js  c++  java
  • java调度框架quartz

    (一)简介

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能

    持久性作业 - 就是保持调度定时的状态;

    作业管理 - 对调度作业进行有效的管理

    (二)构成

    Quartz的基本组成部分:

    1.任务:Job/JobDetail

    Job是Quartz中的一个接口,接口下只有execute方法,在这个方法中编写业务逻辑

    JobDetail用来绑定Job,为Job实例提供许多属性

     

    2.触发器:Trigger

    有了任务之后,还需要一个能够实现触发任务去执行的触发器,触发器Trigger最基本的功能是指定Job的执行时间,执行间隔,运行次数等

    Trigger包括SimpleTrigger和CronTrigger

    SimpleTrigger可以实现在一个指定时间段内执行一次作业任务或一个时间段内多次执行作业任务

    CronTrigger功能非常强大,是基于日历的作业调度,CronTrigger是基于Cron表达式的

    3.调度器:Scheduler

    有了Job和Trigger后,Schedule负责指定Trigger去执行指定的Job

    业务逻辑类PrintWordsJob 

    public class PrintWordsJob implements Job{
    
        @Override
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
            String printTime = new SimpleDateFormat("yy-MM-dd HH-mm-ss").format(new Date());
            System.out.println("PrintWordsJob start at:" + printTime + ", prints: Hello Job-" + new Random().nextInt(100));
    
        }
    }

    调度类

    public class MyScheduler {
        public static void main(String[] args) throws SchedulerException, InterruptedException {
            // 1、创建调度器Scheduler
            SchedulerFactory schedulerFactory = new StdSchedulerFactory();
            Scheduler scheduler = schedulerFactory.getScheduler();
            // 2、创建JobDetail实例,并与PrintWordsJob类绑定(Job执行内容)
            JobDetail jobDetail = JobBuilder.newJob(PrintWordsJob.class)
                    .usingJobData("jobDetail1", "这个Job用来测试的")
                    .withIdentity("job1", "group1").build();
            // 3、构建Trigger实例,每隔1s执行一次
            Date startDate = new Date();
            startDate.setTime(startDate.getTime() + 5000);
    
            Date endDate = new Date();
            endDate.setTime(startDate.getTime() + 5000);
    
            CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "triggerGroup1")
                    .usingJobData("trigger1", "这是jobDetail1的trigger")
                    .startNow()//立即生效
                    .startAt(startDate)
                    .endAt(endDate)
                    .withSchedule(CronScheduleBuilder.cronSchedule("* 30 10 ? * 1/5 2018"))
                    .build();
    
            //4、执行
            scheduler.scheduleJob(jobDetail, cronTrigger);
            System.out.println("--------scheduler start ! ------------");
            scheduler.start();
            System.out.println("--------scheduler shutdown ! ------------");
    
        }
    }

    转自:https://blog.csdn.net/noaman_wgs/article/details/80984873

  • 相关阅读:
    Azure HPC Pack Cluster添加辅助节点
    Azure HPC Pack 辅助节点模板配置
    Azure HPC Pack配置管理系列(PART6)
    Windows HPC Pack 2012 R2配置
    Azure HPC Pack 节点提升成域控制器
    Azure HPC Pack VM 节点创建和配置
    Azure HPC Pack 部署必要条件准备
    Azure HPC Pack 基础拓扑概述
    Azure VM 性能计数器配置
    Maven私仓配置
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/14592712.html
Copyright © 2011-2022 走看看