为了账号安全,请及时绑定邮箱和手机立即绑定
  • SimpleTrigger的作用:在指定时间执行且仅执行一次任务,或者是在指定时间间隔内多次执行任务。

    举例1:当前时间4秒后,执行定时任务并仅执行一次。

    http://img1.sycdn.imooc.com//5e102cd30001c23d09260392.jpg

    http://img1.sycdn.imooc.com//5e102ce0000171e512220647.jpg

    http://img1.sycdn.imooc.com//5e102ceb0001233307880201.jpg

    举例2:每隔2秒钟执行一次定时任务,通过withRepeatCount方法实现重复执行定时任务,如果withRepeatCount参数是整数,代表第一次执行之后执行定时任务的次数,如图。

    http://img1.sycdn.imooc.com//5e102e9a0001763c08610374.jpg

    http://img1.sycdn.imooc.com//5e102eb00001252110750687.jpg

    http://img1.sycdn.imooc.com//5e10303f0001462408120313.jpg

    注意:endAt方法优先级大于withRepeatCount方法优先级,即使次数还没执行完,到指定时间也会结束。

    http://img1.sycdn.imooc.com//5e1030b4000119d909560587.jpg

    查看全部
    0 采集 收起 来源:SimpleTrigger

    2020-01-04

  • Trigger定义:Quartz的触发器,用来定义调度程序任务执行的时间,也就是触发执行Job的时间。

    Quartz框架中的Trigger架构:如图。

    1、Trigger是Builder设计模式创建的。

    2、Trigger实现类很多,这里常用CronTriggerImpl和SimpleTriggerImpl这两个Trigger实现类。

    http://img1.sycdn.imooc.com//5e101afb0001976011190629.jpg

    触发器通用属性(所有实现类拥有的属性)

    JobKey:Job实例的标识,触发器触发调度工具时,该Job对应的相应任务就会执行(通过JobKey可以获取和Trigger绑定的JobDetail的一些信息)。

    StartTime:触发器的时间表,首次被触发的时间,类型为Java.uitl.Date(可以在调度器中存储一个触发器,当时间到了触发的时间调度器就会调用Job的相应任务)。

    EndTime:触发器不再被触发的时间,它的类型为Java.uitl.Date,超过这个时间,触发器就会执行了。

    举例:如图,演示startTime、endTime、JobKey的使用。

    1、通过Date获取3秒后的时间。

    2、触发器执行指定触发时间的方法(startAt()、endAt())

    3、通过Trigger获取JobKey,并且通过jobKey获取与Trigger绑定的Job的JobDetail的相关信息。

    4、通过Trigger获取startTime和endTime的信息。

    http://img1.sycdn.imooc.com//5e1027e80001639e15120496.jpg

    http://img1.sycdn.imooc.com//5e1027f40001513612150794.jpg

    http://img1.sycdn.imooc.com//5e1028080001c11309650320.jpg


    查看全部
    0 采集 收起 来源:浅谈Trigger

    2020-01-04

  • 举例:如图。

    知识点1:可以通过getMergedJobDataMap()获取JobDetail和Trigger合并的JobDataMap。但这里需要注意一点是如果Trigger和JobDetail的key相同,那么Trigger会覆盖JobDetail。

    http://img1.sycdn.imooc.com//5e09fc6b0001ad6e10000912.jpghttp://img1.sycdn.imooc.com//5e09fc750001434509720894.jpg

    第二种获取传入JobExecuteContext的参数:更直接,更简洁。通过setter方法直接对Job里对应key值的成员变量赋值。

    http://img1.sycdn.imooc.com//5e0a008b00012ebd09620280.jpg

    举例:如图。

    知识点1:通过在实现Job接口的实现类中,定义成员变量并提供setter方法,前提成员变量的类型要和传入的value值类型相同,名称要和key的名称相同。该种方式就可以不使用JobDataMap了。

    http://img1.sycdn.imooc.com//5e0a026e0001ca1d09570912.jpg

    http://img1.sycdn.imooc.com//5e0a02830001daa410210892.jpg

    查看全部
  • JobExecutionContext:它是位于Job接口的execute方法的参数位置。由于每个业务逻辑Job实例需要的参数不同,Quartz没办法提供带有参数的构造函数。去给Job实例初始化参数。因此Quartz在每次执行Job时,都需要重新创建一个Job实例。并通过newInstance的反射机制调用无参构造函数,依据Job实现类的描述来实例化Job。所以想进行传参就需要使用JobExecutionContext。(类似于Servlet访问ServletContext那样)通过JobExecutionContext,Job可以访问到所处环境的所有信息(包括注射到Scheduler上与该Job相关的JobDetail和Trigger)。

    http://img1.sycdn.imooc.com//5e09ee340001759f09940580.jpg

    JobDataMap:它支持键值对的形式,将自定义参数传入JobDataMap。

    http://img1.sycdn.imooc.com//5e09ee940001363509860589.jpg


    获取JobDataMap:

    举例:如图。

    知识点1:通过在创建JobDetail或者Trigger时,通过usingJobData(参数1,参数2)为JobExecuteContext参数传入参数,如果传入多个参数,可以通过定义多个usingJobData方法。

    知识点2:可以通过JobKey或者TriggerKey实例的getName或者getGroup方法获取JobDetail或者Trigger的唯一标识和组。而JobKey或者TriggerKey是通过JobExecuteContext参数的getJobDetail.getKey()或者getTriiger().getKey()方法获取的。

    知识点3:可以通过JobDataMap获取传入的参数,也就是通过传入的key获取value,而JobDataMap是通过JobExecuteContext实例的getJobDetail.getJobDataMap或者getTrigger.getJobDataMap获取的。之后就可以通过JobDataMap实例的getKey("key")获取值。

    http://img1.sycdn.imooc.com//5e09f65500013ae811000922.jpg

    http://img1.sycdn.imooc.com//5e09f66d000171b610220937.jpg

    查看全部
  • Job接口:实现业务逻辑的任务接口,实现该接口需要实现execute方法,该方法类似于TimerTask的run方法。JobExecutionContext参数是Job执行的上下文,其中在该参数中有一个JobDataMap,它包含了输入的参数。

    注意:execute方法声明抛出了一个异常,如果任务执行失败,我们可以通过捕获该异常来处理。避免了Timer的全崩式失败。

    http://img1.sycdn.imooc.com//5e085d12000142d509230335.jpg

    Job在Quartz的生命周期:每次Scheduler执行Job时,它在调用execute方法前会根据JobDetail提供的类型创建一个Job实例。当该任务执行完毕后,会丢弃该Job实例,并且释放的实例会被垃圾回收机制回收。

    JobDetail接口:JobDetail为Job实例提供了许多设置属性,以及JobDataMap成员变量属性,它用来存储特定Job实例的状态信息,Scheduler需要借助JobDetail对象来添加Job实例。

    Job的重要属性:

    name:任务的名称,它在JobDetail中是必须项。

    group:任务所在组,默认值是大写的DEFAULT,它也是必须项。

    jobClass:JobDetail传入任务的类类型,它也是必须项。

    jobDataMap:它用来传参的作用。

    http://img1.sycdn.imooc.com//5e08616a00019ae510360909.jpg

    使用场景:例如,输出日志,输出执行的任务所在路径就可以通过getClass()。

    查看全部
    1 采集 收起 来源:浅谈Job&JobDetail

    2019-12-29

  • 举例:任务每隔两秒钟打印一次Hello World。

    首先,需要到maven中央仓库复制坐标到pom文件中,如图。

    http://img1.sycdn.imooc.com//5e083d320001270f09910629.jpg

    ——总结——

    http://img1.sycdn.imooc.com//5e08546d00013c2010140610.jpg

    http://img1.sycdn.imooc.com//5e0859de00014b9b11140912.jpg

    JobDetail:

    通过它可以获取Job执行时的一些信息。JobDetail它是通过Builder设计模式创建的。

    Trigger:

    通过它可以触发Job何时执行。它也是通过Builder设计模式创建的。立即执行是通过startNow方法。时间间隔通过withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2)。重复执行repeatForever()。

    Scheduler:它是通过Factory设计模式创建的。

    查看全部
  • Quartz简介:OpenSymphony提供的强大的开源任务调度框架(官网:http://www.quartz-scheduler.org/),它是基于Java实现的。

    http://img1.sycdn.imooc.com//5e08157b00017a3f10830431.jpg

    Quartz特点:

    1、强大的调度任务框架,Spring默认的调度框架,容易与Spring集成,实现灵活、可配置的调度功能。

    2、提供了调度运行环境的持久化机制,可以保存并恢复调度现场,即使系统因故障关闭,任务调度现场数据并不会丢失(Timer就不能做到这一点,一旦失败,接下来的任务就都不能执行了,并且一切的执行信息都会丢失)。

    3、允许灵活的定义调用触发器的时间表,并可以对触发器和任务进行关联映射,它提供了主键式的监听器和各种插件,线程池的功能,支持任务和调度的多种组合方式,支持调度数据的多种存储方式。

    4、分布式和存储能力。

    Quartz用到的设计模式:

    1、Builder模式:例如Job、Trigger,它们都是通过Builder创建的。

    2、Factory模式:例如调度器是通过它创建的。

    3、组建模式:可以让每一个组件可以插拔,并且组件之间的耦合度是很低的,易于扩展,可以自行定义一些组件。

    4、链式写法

    Quartz的核心概念:

    1、调度器:定期定时定频率的调度执行任务。

    2、任务:业务逻辑。

    3、触发器:让行为生效的时间。

    Quartz的体系结构:

    1、JobDetail:任务的实现细节。

    2、Trigger:触发器,决定任务什么时候被调用,它又分为SimpleTrigger、CronTrigger,SimpleTrigger它类似于Timer,实现时间上的一些操作。CronTrigger实现较为复杂的业务逻辑,例如每周三执行任务。

    3、scheduler:调度器,定时定频率调用定时任务JobDetail,并且通过它将JobDetail和Trigger绑定在一起。

    Quartz的重要组成:

    1、Job:区别于JobDetail,它是一个接口,并且只有一个方法,可以通过实现该接口,实现定时任务,它就相当于TimerTask的run方法,只不过是该方法有一个参数。


    查看全部
    0 采集 收起 来源:初识Quartz

    2019-12-29

  • http://img1.sycdn.imooc.com//5ded0c5f0001e95912410710.jpg

    Scheduler


    查看全部
    0 采集 收起 来源:浅谈Scheduler

    2019-12-08

  • Cron表达式及案例<br/><p><img src="http://img1.sycdn.imooc.com//5ded090f0001429105000280.jpg" alt="http://img1.sycdn.imooc.com//5ded090f0001429111900666.jpg"/></p><p><img src="http://img1.sycdn.imooc.com//5ded090f0001a42105000284.jpg" alt="http://img1.sycdn.imooc.com//5ded090f0001a42111930676.jpg"/></p>
    查看全部
    0 采集 收起 来源:CronTrigger

    2020-09-11

  • 通配符说明<br/><p ><img src="http://img1.sycdn.imooc.com//5ded08670001e71305000243.jpg" alt="http://img1.sycdn.imooc.com//5ded08670001e71312510607.jpg"/></p>
    查看全部
    1 采集 收起 来源:CronTrigger

    2020-09-11

  • Job的定义:实现业务逻辑的任务接口。

    浅谈Job:Job接口非常容易实现,只有一个execute方法,类似TimerTask的run方法,在里面编写业务逻辑。

     package org.quartz;

    public interface  Job{

        public void execute(JobExecutionContext context)throws     

         JobExecutionException;

    }

    Job实例在Quartz中的生命周期

        每次调度器执行job时,它在调用execute方法钱会创建一个新的job实例。

        当调用完成后,关联的job对象实例会被释放,释放的实例会被垃圾回收机制回收。

    浅谈JobDetail

        JobDetail为Job实例提供了许多设置属性,以及JobDataMap成员变量属性,它用来存储特定Job实例的状态信息,调度器需要借助JobDetail对象来添加Job实例。

    查看全部
    0 采集 收起 来源:浅谈Job&JobDetail

    2019-12-08

  • Quartz体系机构:


    查看全部
    0 采集 收起 来源:初识Quartz

    2019-11-20

  • 链式写法
    查看全部
    0 采集 收起 来源:浅谈Job&JobDetail

    2019-09-21

  • 定时任务工具所需

    调度器scheduler  老板

    触发器trigger    下班

    任务jobDetail    发工资

    总结:下班老板发工资

    查看全部
  • 特点:强大的调度功能,灵活的应用方式 ,分布式和集群能力http://img1.sycdn.imooc.com//5d6f9e7d0001319712050683.jpg

    查看全部
    0 采集 收起 来源:初识Quartz

    2019-09-04

举报

0/150
提交
取消
课程须知
建议先学习本课程的前置课程Timer篇: http://www.imooc.com/learn/841
老师告诉你能学到什么?
什么是Quartz,Quartz如何用,如何与Spring合为一体

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!