自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 Tbschedule源码阅读6:对分布式调度系统的思考

虽然把Tbschedule的源码读了一遍,但是如果说让自己来设计一个分布式的调度系统,顿时感觉源码又白读了,我还是不会。那从里面学习到了什么呢?细想一下,能够找出来的东西屈指可数,CopyOnWriteArrayList的用法?Synchroniezed关键字用法又回忆了一次?很显然,这不是我想要的结果。如果仅仅是学习这些简单的东西,完全没必要看这么多复杂的代码。因此,静心下来,回想下自己所学到的...

2018-06-16 15:35:48 367

原创 Tbschedule源码阅读5:TbSchedule任务的执行

终于到了任务执行阶段,当manager(或者在任务恢复/暂停Timer里)调用resume后,会启动执行线程执行任务。根据配置的参数,启动1个或者多个线程去执行线程。具体的流程如下:1.若调度被停止,那么将当前线程移除,若是最后一个线程,还需要注销调度服务(也就是将manager中的processor设置为null),然后直接返回,否则:2.加载需要处理的数据。(从共享数据队列中取出第一个...

2018-06-16 11:45:45 719

原创 Tbschedule源码阅读4:TbSchedule调度机的创建-----任务恢复暂停Timer(PauseOrResumeScheduleTask)

在任务管理线程中,当根据配置计算完成任务第一次执行开始时间和第一次结束开始时间后,将启动任务恢复/暂停调度Timer, 在该timer中主要有以下事情需要做:1.取消调度(this.cancel):启动调度后只能执行一次。2.若为暂停调度 2.1 若暂停调度设置为false,那么执行如下,否则直接返回。(默认为true,若任务执行,该值被设置为false)2.2 设置暂停标志为true...

2018-06-16 11:41:58 246

原创 Tbschedule源码阅读4:TbSchedule调度机的创建-----任务恢复暂停Timer(PauseOrResumeScheduleTask)

在任务管理线程中,当根据配置计算完成任务第一次执行开始时间和第一次结束开始时间后,将启动任务恢复/暂停调度Timer, 在该timer中主要有以下事情需要做:1.取消调度(this.cancel):启动调度后只能执行一次。2.若为暂停调度 2.1 若暂停调度设置为false,那么执行如下,否则直接返回。(默认为true,若任务执行,该值被设置为false)2.2 设置暂停标志为true...

2018-06-16 11:41:56 391

原创 Tbschedule源码阅读3:TbSchedule调度机的创建-----心跳Timer

心跳Timer实在创建调度机的时候(构造函数中)启动的。心跳Timer的主要作用是定时写入调度机的信息,任务分片的重新分配,加载最新任务分片;1.重写调度信息 1.1判断是否被停止调度,若停止,方法直接返回,否则到1.2 1.2发送心跳信息(写入当前调度服务的信息,执行情况),更新成功,直接返回,否则到下一步1.3 更新失败,需要清理当前任务项、执行线程加载的数据(清理内存数...

2018-06-16 11:38:42 495

原创 Tbschedule源码阅读2:TbSchedule调度机的创建-----管理线程组的启动

当管理工厂Timer到达执行时间后,会新启动一个调度ManagerFactoryTImer,调度会根据实时的调度任务和机器信息重新计算每个策略在每个机器上分配的调度管理线程组个数。若当前调度管理器个数不足,那么需要新增。此时则需要创建一个管理线程组。 在创建的时候,构造器中的操作包括:1.将对调度时期用到的参数进行赋值,2. 并清理过期的调度任务; 3. 校验客户端的自己实现的Bean( 很简单...

2018-06-16 11:26:50 428

原创 Tbschedule源码阅读1:Tbschedule调度之初始化---启动

启动这块的内容比较简单,但是是整个调度系统的入口,主要是一些节点的初始化和管理工厂Timer的启动。 在Schedule.xml配置文件中,配置TBScheduleManagerFactory的Bean. 当容器初始化的时候,首先加载一些配置信息,然后开启一个线程(MangerFactory-initalTread)[为什么要开启一个单独的线程?用一个单独的线程来启动,避免启动过长而影响到其他b...

2018-06-16 11:18:58 432

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除