关系经济人类预测化学自然
投稿投诉
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

Quartz的启动流程分析

1月5日 夜如影投稿
  昨天写了篇SpringBoot整合Quartz的文章,然后也正巧不知道写什么了,就带着好奇写了这篇文章,明天的话再谈一谈执行流程。一、简要1。1、quartz的核心元素Scheduler为调度器负责整个定时系统的调度,内部通过线程池进行调度,下文阐述。Trigger为触发器记录着调度任务的时间规则,主要有四种类型:SimpleTrigger、CronTrigger、DataIntervalTrigger、NthIncludedTrigger,在项目中常用的为:SimpleTrigger和CronTrigger。JobDetail为定时任务的信息载体,可以记录Job的名字、组及任务执行的具体类和任务执行所需要的参数Job为任务的真正执行体,承载着具体的业务逻辑。(像我们昨天的小案例中,简单定时任务就是实现了job接口)
  大致流程就是:先由SchedulerFactory创建Scheduler调度器再由Scheduler调度器去调取即将执行的Trigger,执行时获取到对于的JobDetail信息,最后找到对应的Job类执行业务逻辑。1。2、quartz中的线程执行线程主要由一个线程池维护,在需要执行定时的时候使用,这里使用的线程池是org。quartz。simpl。SimpleThreadPool,默认线程数为10(这些在程序启动过程中的打印信息处就能看到)
  调度线程主要分为RegularSchedulerThread和MisfireSchedulerT其中RegularThread轮询Trigger,如果有将要触发的Trigger,则从任务线程池中获取一个空闲线程,然后执行与改Trigger关联的MisfireThraed则是扫描所有的trigger,查看是否有错失的,如果有的话,根据一定的策略进行处理。二、quartz启动流程
  通常是使用StdSchedulerFactory创建Scheduler调度器。
  在SchedulerFactoryBean配置类中配了相关的配置及配置文件参数,所以会读取配置文件参数,初始化各个组件。
  启动流程的大致步骤如下:先读取配置文件初始化SchedulerFactoryBean初始化SchedulerFactory实例化执行线程池(TheadPool)实例化数据存储初始化QuartzScheduler(为Scheduler的简单实现,包括调度作业、注册JobListener实例等方法。)new一个QuartzSchedulerThread调度线程(负责执行在QuartzScheduler中注册的触发触发器的线程。),并开始运行调度开始,注册监听器,注册Job和TriggerSchedulerFactoryBean初始化完成后执行start()方法创建ClusterManager线程并启动线程创建MisfireHandler线程并启动线程置QuartzSchedulerThread的pausedfalse,调度线程真正开始调度,开始执行run方法2。1、读取配置文件
  这里的读取,没有去debug,配置文件的位置是在
  org。quartz的包下,文件名为quartz。properties
  其内容为:
  2。2、初始化SchedulerFactoryBean
  当服务器启动时,Spring就加载相关的bean。
  SchedulerFactoryBean实现了InitializingBean接口,因此在初始化bean的时候,会执行afterPropertiesSet方法,
  该方法将会调用SchedulerFactory,通常是调用StdSchedulerFactory来创建Scheduler调度器2。3、初始化SchedulerFactory
  这一步是在SchedulerFactoryBean的prepareSchedulerFactory方法中进行初始化,在上一步也已经看到
  我们接着往下Debug
  这一大段都是在获取配置文件信息,我们直接将断点放到方法的末尾,看一下里面的值,和接下来要debug的方法
  到这之后,我们会回到
  this。schedulerprepareScheduler(prepareSchedulerFactory());这一步,拿到
  prepareSchedulerFactory()返回的,接着往下走。
  上面的if就不看了,直接看create方法做了什么
  这里的this。schedulerName是quartzScheduler
  这里的schedulerFactory。getScheduler()是值得我们注意的,点进去看,我们看看StdSchedulerFactory的getScheduler()方法做了什么呢?
  引来袭来的就是quartz中的重要组件,而且都是null,这说明我们要到下一步啦
  2。4、实例化执行线程池(TheadPool)
  2。5、实例化数据存储
  2。6、初始化QuartzScheduler
  QuartzScheduler为Scheduler的简单实现,包括调度作业、注册JobListener实例等方法。
  2。7、new一个QuartzSchedulerThread调度线程
  QuartzSchedulerThread负责执行在QuartzScheduler中注册的触发触发器的线程,并开始运行
  走到就不在继续逗留了,我们直接回到方法调用处去。2。8、注册监听器,注册Job和Trigger
  里面不再点进去看如何注册啦,想看的xdm,继续去Debug就可以了
  到这里SchedulerFactoryBean初始化就算是完成了。接下来就是执行start()方法2。9、SchedulerFactoryBean执行start()方法
  这里的start方法是bean的生命周期中的,我们关注的不是这里,
  而是方法内部的startScheduler(this。scheduler,this。startupDelay)方法
  这两个不接着往下看啦,疲啦。。。
  添上红字的这两个就不继续看,我们关注一下this。resources。getJobStore()。schedulerStarted();,这也是下一步骤的开始2。10、创建Cluszaizaianager线程、创建MisfireHandler线程
  我原本想关注一下voidrecoverJobs()方法
  原本我是还想点进executeInNonManagedTXLock()方法继续看一眼,直接看麻了,知道这里是恢复任务就行了,看起来很难受,里面更加庞大啦,主要是没有思绪2。11、QuartzSchedulerThread开始执行run方法
  置QuartzSchedulerThread的pausedfalse,调度线程真正开始调度,开始执行run方法
  这才是调度的真正开始,前面都只能算是准备工作吧。
  什么时候触发,获取线程执行任务,怎么查询数据库等等,可以说是从这里开始的。不过,咱们今天跑路了,明天或下次再来
  后记
  昨天写了一个Quartz的小案例,就顺带Debug了一下,简单的走了流程,里面的代码太多值得分析的啦,明天再来看看run方法,这里才是调度的重点
  作者:宁在春
  链接:https:juejin。cnpost7131376773148721188
投诉 评论 转载

乒坛即将打响两项赛事!国乒主力不参加,小鬼当家扛大旗中国乒乓球能够长盛不衰,除了有强大的群众基础之外,还离不开乒坛掌门人的运筹帷幄!近段时间,中国乒协主席刘国梁让主力球员放弃两站WTT分站赛得到球迷的称赞!刘国梁,中国乒乓……3。6万公里外建三峡,中国要建太空太阳能发电站,电咋到地球很多人说中国空间站有什么用,中国空间站系统总设计师杨宏就回答了,中国空间站将为未来空间太阳能电站提供在轨技术验证。没有错,中国要在3。6万公里外的太空建三峡空间太阳能发电……我喜欢裸睡我不喜欢热,温度一上升就受不了,尤其夏天满身汗,文胸内衣全是湿乎乎的,心烦意乱的不得了。我不喜欢戴首饰,白天带着晚上就得拿下来,不然不舒服睡不好。我不喜欢穿袜子,除……大国烯材,高烯科技石墨烯基碳纤维全球首发11月19日,第九届中国国际石墨烯创新大会开幕式在上海召开。一项将重塑全球石墨烯科技及产业格局的中国原创技术成果,在开幕式上隆重发布:高导热石墨烯基碳纤维!本次首发的高导……荣耀MagicVs全球首发黑科技亮相,荣耀MagicV为让路荣耀MagicVs系列后置5400万像素IMX800视频主摄像头(11。49寸大底;F1。9大光圈;全像素对焦;硬件SuperHDR视频)、5000万像素超广角微距主摄像头和8……上单他成稳定上分选手,天克天使完胜鳄鱼,前期崩盘后期依旧无解哈喽,大家好!我是老张。上单位置在英雄联盟手游当中的重要性绝对是毋庸置疑的,身为对抗路的彪形大汉,往往承担着开团抗伤、输出、控制这种最为重要的位置。不过很多上单英雄都是前期强,……长期用香薰的人后果是这样?太可怕了现代人工作太忙碌,压力太大。工作和生活的时候,点一支香,既可以舒缓身心,提神醒气,养生健体。也让我们在匆忙之间,感受到一丝从容和惬意,更好的去应对工作的挑战、感受生活的乐趣。……投奔穆帅!罗马免签苦主攻击手达成协议!法国中卫自荐加盟对于罗马队来说,球队在本赛季拿出了非常出色的表现。就像外界预期的那样,在穆里尼奥执教球队的第二个赛季,他们如愿以偿地展现出了非常不错的竞争力。在意甲联赛当中,他们在4场比赛当中……Quartz的启动流程分析昨天写了篇SpringBoot整合Quartz的文章,然后也正巧不知道写什么了,就带着好奇写了这篇文章,明天的话再谈一谈执行流程。一、简要1。1、quartz的核心元素Sche……塞外的风,吹过了塞外青城那年,北京奥运会。我从呼伦贝尔一个小旗县,来到了塞外青城。从火车站出来,人流如织,一个个高楼散发着闪耀的灯光,感叹着、真是人间好繁华。那时,中山路人潮汹涌,那……让你变老的几大因素,一定要注意让你变老的几大因素,一定要注意。面部脂肪女人的衰老在30岁后会特别明显,但其实衰老可不是从30岁开始的!一般在25岁左右的时候,身体素质就会慢慢变差,胶原蛋白和弹性……买大衣少选黑色,太老气!今年流行这4个高级色,稳赚回头率又到了穿大衣的季节了,你的衣橱里有没有准备好大衣呢?很多人选择大衣只是为了达到御寒保暖的效果,却很容易忽略它的穿衣细节,比如色彩上的挑选。大多数的女性在选择大衣的时候,都……
NBA午报威金斯妻子怒斥小乔家暴,杜兰特要价曝光,勇士6人离勇士险胜绿军!库里43104,比赛最后6秒,库里和克莱激情撞德转对比皇马ampampamp巴萨三位年轻中场身价配文新时代欧国联0捷克4轮不败萨拉维亚破门索莱尔建功由量变到智变新势力智能辅助驾驶标杆小鹏汽车的体验如何?vivo手机有地震预警功能吗?怎么开启地震预警服务呢?来自星星的孩子孤独的父与孤独症子居然还有这种联名?这些珠宝跨界设计也太可爱了章子怡也有中年危机了?穿红裙扎马尾,宽厚的上半身越看越壮实华为Mate50Pro曝光苹果官网彻底变了iOS16可用Ap不为奔波万里,只为悠然自得,19个最美旅行地,猜猜第一名是哪便秘是隐藏在高血压患者体内的一颗雷
吃笋瓜有什么要注意的吗什么人群不能吃笋瓜呢人性密码第六篇规律本身就是残酷的t恤下摆怎么塞到裤子里每天出门不重样关于谆谆教导的造句终于明白国家为什么放手了,事实证明,全面放开是正确的男人精子成活率低吃什么食物好阿里巴巴在维基经济学中成长长安十二时辰李必经常和皇帝争执,为什么还能位极人臣?我喜爱我家的小狗作文400字写雪景的作文八篇中秋节的诗句念奴娇咏中秋月历史上的中国十大古画,《清明上河图》仅排第5(第1名实至名归

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州