zoukankan      html  css  js  c++  java
  • 5.17 Quartz笔记

      有用到构建者模式:

        builder---JobDetail相当于需要构建者构建出来的一个配件:JobDetail为Job实例提供了许多设置属性,以及JobDetaMap成员变量属性,它用来存储特定Job实例的状态信息,调度器需要借助JobDeatil对象来添加Job实例!JobDetail重要属性:namegroupjobClassjobDataMap!!组名没有设置就是:DEFAULT!

        builder---Trigger相当于需要构建者构建出来的一个配件

        adapter---Scheduler相当于JobDetail和Trigger这两个配件组装成一个Scheduler

      A---JobExecutionContext和JobDataMap介绍【注意:在进行任务调度时JobDataMap存储在JobExecutionContext(启动:该类传递给Job的execute()方法)中】

      AA---有状态的Job和无状态的Job【@PersisJobDataAfterExecution注解的使用:有状态的Job可以理解为多次Job调用期间可以持有一些状态信息,这些状态信息存储在JobDataMap中,而默认的无状态job每次调用时都会创建一个新的JobDataMap】。

      AAA---HelloJob加上@PersisJobDataAfterExecution注解count(set方法)累加【有状态】--------------不加注解重复调度启动count值固定不变 、

      AAAA---Trigger触发器介绍-SimpleTriggerImpl-CronTriggerImpl【jobKey-startTime-endTime】

      AAAAA---SimpleTrigger触发器:SimpleTrigger对于设置和使用是最为简单的一种QuartzTrigger-它为那种需要在特定的日期/时间启动,且以一个可能的间隔时间重复执行n次的Job所设计的-案例一:表示在一个指定的时间段内,执行一次作业任务-案例2:或在指定的时间间隔内多次执行作业任务-案例3:指定任务的结束时间

      AAAAAA---CronTrigger触发器:如果你需要像日历那样按日程触发任务,而不是像SimpleTrigger那样每隔特定的时间触发,CronTriggers通常比SimpleTrigger更有用,因为它是基于日历的作业调度器。【也有startTime-endTime】

      每次调用的时候Job都会生成一个实例

    一、首先需要明白Quartz的几个核心概念。

      A---Job表示一个工作,要执行的具体内容。此接口中只有一个方法,如下:void execute(JobExcutiontext context)

      B---JobDetail表示一个具体的可执行的调度程序!!,Job 是这个可执行程调度程序所要执行的内容,另外 JobDetail 还包含了这个任务调度的方案和策略。!如果HelloJob内重写了无参数的构造方法,里面有system语句,会先执行重写的无参构造方法里的输出语句!

      C---Trigger 代表一个调度参数的配置,什么时候去调。

      D---Scheduler 代表一个调度容器,一个调度容器中可以注册多个 JobDetail 和 Trigger。当 Trigger 与 JobDetail 组合,就可以被 Scheduler 容器调度了。

      

      1.加入依赖。www.mvmrepository.com表示mvn仓库网址:可以搜索获取maven的依赖的jar

        1.1 核心包 :org.quarzt-scheduler(groupId)  ---  quartz(artifactId)

        1.2 工具 :org.quarzt-scheduler(groupId)  ---  quartz-job(artifactId)

        1.3 日志包:log4j---需要引入log4.j.properties(have content)【log4j利用法:org.apache.log4j.ConsoleAppender控制台输出或者.FileAppender文件的输出---log4j.rootLogger=info,s控制台输】

        1.4 插件(maven-compiler-plugin)jdk1.8

      2.创建一个quartz.job的包创建一个类!实现Job接口!重写execute(JobExecutionContext)方法!

        2.1 execute方法里写你想要(定时)执行的语句

      3.创建一个quartz.mian的包创建一个可执行的类即主线程。

        3.1 main方法内:A:调度器(Scheduler),从工厂中获取调度的实例(默认:实例化new StdSchedulerFactory();)

        3.2       B(名称,组名称): 任务实例(JobDetail)//加载任务类,与HelloJob完成帮绑定,要求HelloJob实现Job接口。quarzt

        3.3       C(名称,组名称): 触发器(Trigger),自定义马上启动触发器,!简单的调度器构建(永远在5秒后(自定义的重复时间)重复第二遍的时候)!

        3.4  A2 :第一个A创建的调度器即适配BC(builder配件):schduler.scheduleJob(jobDetail,trigger);//让调度器关联任务和触发器,保证按照触发器定义的条件执行任务

        3.5 D :scheduler.start(),调度器调用启动方法。

      4. 运行:即没5秒执行一次HelloJob类。

            

  • 相关阅读:
    应用系统数据删除与恢复
    Java设计模式(八)Proxy代理模式
    Java设计模式(七)Decorate装饰器模式
    Java服务器端生成报告文档:使用SQL Server Report Service(SSRS)
    C#生成二维码,裁切边框
    Java ORM Hibernate 入门笔记
    Java JDBC MySQL
    Java JDBC SqlServer
    Java设计模式(六)Adapter适配器模式
    Java设计模式(五)Prototype原型模式
  • 原文地址:https://www.cnblogs.com/wym591273/p/10926624.html
Copyright © 2011-2022 走看看