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();

  }

}
posted @ 2021-06-23 10:09  俊king  阅读(226)  评论(0编辑  收藏  举报