zoukankan      html  css  js  c++  java
  • 6.22Java任务调度框架:Quartz

    6.22Java任务调度框架:Quartz

    Java任务调度框架:Quartz

    由四大部分组成:

    • Scheduler--->调度器,控制所有的调度

    • Trigger--->触发条件,采用DSL模式

      • DSL:--->Domain-specific language领域特定语言,受限表达下的一种计算机程序语言。声明式编程

        • Method Chaining 方法链(流模式)

          • Fluent Style 流畅风格

          • Builder 模式构建器

        • Nested Functions 嵌套函数

        • Lambda Expressions/Closures

        • Functional Sequence

    • JobDetail--->需要处理的JOB

    • Job--->执行逻辑

    已经集成到了Sprint里面

    下载Quartz

    下载链接

    • 解压

    • IDEA中导入该jar包

      • File--->Project Structure--->选择该项目--->点击项目左上角"+"号--->选择"JAR or directories"--->找到解压路径下的lib目录下的文件--->选择OK

    该框架需要有log4j.xml作为数据传输格式

    实例demo
    package thread.quartz;

    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerFactory;
    import org.quartz.Trigger;
    import org.quartz.impl.StdSchedulerFactory;

    import java.util.Date;

    import static org.quartz.DateBuilder.evenMinuteDate;
    import static org.quartz.DateBuilder.evenSecondDateAfterNow;
    import static org.quartz.JobBuilder.newJob;
    import static org.quartz.TriggerBuilder.newTrigger;

    /**
    * Quartz Introduction to learning
    * @since JDK 1.8
    * @date 2021/6/22
    * @author Lucifer
    */
    public class QuartzTestNo2 {

       public void run() throws Exception {

           // 由于调度器来自于调度器工厂--->创建Scheduler的工厂
           SchedulerFactory sf = new StdSchedulerFactory();
           // 从工厂中获取调度器--->初始化完毕
           Scheduler sched = sf.getScheduler();

           // 创建JobDetail
           JobDetail job = newJob(QuartzTestNo1.class).withIdentity("job1", "group1").build();

           // 时间
    //       Date runTime = evenMinuteDate(new Date()); //这是一个静态方法,有分钟和秒
           Date runTime = evenSecondDateAfterNow();

           // 触发条件
           Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();

           // 注册任务和触发条件
           sched.scheduleJob(job, trigger);

           // 开始调用--->启动
           sched.start(); //一看到start方法就知道是多线程

           try {
               // 5s后停止线程
               Thread.sleep(5L * 1000L);
               // executing...
          } catch (Exception e) {
               //
          }

      }

       public static void main(String[] args) throws Exception {

           SimpleExample example = new SimpleExample();
           example.run();

      }

    }
    It's a lonely road!!!
  • 相关阅读:
    《大型网站技术架构》学习笔记——架构演化
    ASP.NET MVC之Html.RenderAction
    设计模式学习笔记——面向对象设计原则
    设计模式学习笔记——类图
    观察者模式
    泛型接口
    泛型的实例化应用
    多线程第二种方式-实现runnable
    对象中的某个属性不希望被序例化--transient
    对象序例化
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14921531.html
Copyright © 2011-2022 走看看