zoukankan      html  css  js  c++  java
  • Quartz初识以及简单运用

     1、初识Quartz

     1.1、概述

    •  Quartz是一个完全由Java编写的一个开源的任务调度框架,说的简单点就是开发人员可以通过Quartz根据时间间隔调度任务,例如:
      • 每隔一小时命令程序执行一个任务
      • 每个月命令程序执行一个任务
      • 指定某月末日命令程序执行一个任务
      • ……
    • Quartz下载地址:http://www.quartz-scheduler.org/downloads/

    1.2、Quartz API

    1.2.1、Scheduler——与scheduler交互的主要API;

      Scheduler的生命周期从SchedulerFactory创建它时开始,到Scheduler调用showdown()方法结束。Scheduler只有在调度start()方法后才会真正的触发trigger(执行job)。Scheduler被创建后可以增加、删除、和列举Job和Trigger,以及执行其它与调度相关的操作。

    1.2.2、Job——由调度程序执行的任务需要实现的接口

    1.2.3、JobDetail——定义Job的实例

    1.2.4、Trigger——触发Job的执行

    1.2.5、JobBuilder——定义创建JobDetail实例的接口

    1.2.6、TriggerBuilder——定义创建Trigger实例的接口

    2、Hello Quartz 简单运用

    2.1、首先实现一个简单的小demo《Hello Quartz!》,具体需求:每隔5秒通过控制台输出一句“hello quartz!”;

    2.2、代码

     1 package com.xxw.test;
     2 
     3 import org.quartz.Job;
     4 import org.quartz.JobExecutionContext;
     5 import org.quartz.JobExecutionException;
     6 
     7 public class MyJob implements Job{
     8 
     9     @Override
    10     public void execute(JobExecutionContext arg0) throws JobExecutionException {
    11         System.out.println("hello quartz!");
    12     }
    13     
    14 }
     1 package com.xxw.test;
     2 
     3 import static org.quartz.JobBuilder.newJob;
     4 import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
     5 import static org.quartz.TriggerBuilder.newTrigger;
     6 
     7 import org.quartz.JobDetail;
     8 import org.quartz.Scheduler;
     9 import org.quartz.Trigger;
    10 import org.quartz.impl.StdSchedulerFactory;
    11 
    12 public class HellowQuartz {
    13 
    14     public static void main(String[] args) {
    15         try {
    16             // 定义JobDetail
    17             JobDetail job = newJob(MyJob.class) // 定义Job类为MyJob类,这个类是任务逻辑类
    18                     .withIdentity("job1", "group1") // 定义name/group
    19                     .build();
    20             
    21             // 定义一个Trigger
    22             Trigger trigger = newTrigger()
    23                     .withIdentity("trigger1", "group1") // 定义name/group
    24                     .startNow() // 一旦加入scheduler,立刻生效
    25                     .withSchedule(
    26                             simpleSchedule() // 使用simpleSchedule
    27                             .withIntervalInSeconds(5) // 每隔5秒执行一次
    28                             .repeatForever()) // 一直执行
    29                     .build();
    30             
    31             // 实例 Schedule 调度器
    32             Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
    33             // 添加调度
    34             scheduler.scheduleJob(job, trigger);
    35             // 启动
    36             scheduler.start();
    37             
    38         } catch (Exception e) {
    39             e.printStackTrace();
    40         }
    41     }
    42 }

    2.3、结果

     

  • 相关阅读:
    day49-线程-事件
    day48-线程-信号量
    180-spring框架开启事务的两种方式
    094-SSM框架和控制层,业务层、持久层是什么关系?
    179-当创建FileInputStream会发生什么呢?
    178-链接查询association
    177-properties文件的中文注释是会出现乱码的?
    176-@Mapper注解是什么?
    092-linux都是怎么安装文件的?
    178-什么是dns解析呢?
  • 原文地址:https://www.cnblogs.com/duniang/p/8797101.html
Copyright © 2011-2022 走看看