您当前的位置: www.5098.com > www.74899.com > 正文
另有一类不成贫乏的
浏览次数:发布时间:2019-09-07

  设想:每一个被安排的使命城市被线程池中的一个线程去施行,因而使命能够并发施行,并且彼此之间不受影响。

  虽然ScheduledExecutorService对Timer进行了线程池的改良,可是仍然无法满脚复杂的按时使命安排场景。因而OpenSymphony供给了强大的开源使命安排框架:Quartz。Quartz是纯Java实现,并且做为Spring的默认安排框架,因为Quartz的强大的安排功能、矫捷的利用体例、还具有分布式集群能力,能够说Quartz出马,能够搞定一切按时使命安排!

  scheduleAtFixedRate:每次施行时间为上一次使命起头起向后推一个period间隔,也就是说下次施行时间相对于上一次使命起头的时间点,因而施行时间不会延后,可是存正在使命并发施行的问题。

  4、JobDataMap能够拆载任何能够序列化的数据,存取很便利。需要留意的是JobDetail和Trigger都能够各自联系关系上JobDataMap。JobDataMap除了能够通过上述代码获取外,还能够正在YourJob实现类中,添加响应setter方式获取。

  6、现实上,Quartz正在进行安排器初始化的时候,会加载quartz.properties文件进行一些属性的设置,好比Quartz后台线程池的属性(threadCount)、功课存储设置等。它会先从工程中找,若是找不到那么就是用quartz.jar中的默认的quartz.properties文件。

  schedule:每次施行时间为上一次使命竣事后推一个period间隔,也就是说下次施行时间相对于上一次使命竣事的时间点,因而施行时间会不竭延后。

  2、Quartz有3个焦点概念:安排器(Scheduler)、使命(Job&JobDetail)、触发器(Trigger)。(一个使命能够被多个触发器触发,一个触发器只能触发一个使命)

  延迟多久后施行一次使命;指按时间施行一次使命;延迟一段时间,并周期性施行使命;指按时间,并周期性施行使命;

  正在现实项目开辟中,除了Web使用、SOA办事外,还有一类不成贫乏的,那就是按时使命安排。按时使命的场景能够说很是普遍,好比某些视频网坐,采办会员后,每天会给会员送成长值,每月会给会员送一些片子券;好比正在最终分歧性的场景中,往往操纵按时使命安排进行一些比对工做;好比一些按时需要生成的报表、邮件;好比一些需要按时清理数据的使命等。本篇博客将系统的引见按时使命安排,会涵盖Timer、ScheduledExecutorService、开源东西包Quartz,以及Spring和Quartz的连系等内容。

  正在时间等于或者跨越time/firstTime的时候,会施行task!也就是说,若是time/firstTime指定的时间正在当前时间之前,就会当即获得施行。

  Timer位于java.util包下,其内部包含且仅包含一个后台线程(TimeThread)对多个营业使命(TimeTask)进行按时定频次的安排。

  前面曾经提及到Timer背后是一个单线程,因而Timer存正在办理并发使命的缺陷:所有使命都是由统一个线程来安排,所有使命都是串行施行,意味着统一时间只能有一个使命获得施行,而前一个使命的延迟或者非常会影响到之后的使命。

  然后,就是一些触发器、安排器的设置装备摆设了,这里不再展开引见了,只需弄懂了原生的Quartz的利用,那么和Spring的连系利用就会很简单。



友情链接:
Copyright 2019-2022 http://www.cnlbxxw.cn 版权所有 未经协议授权禁止转载