定时器技术选型の不同业务背景(二)

前一篇博客介绍了不同定时器的使用的业务背景,下面是针对我们公司的需求情况我的实际技术选型过程:

原始需求:每天早上7:00到晚上7:00,每间隔2小时内执行任务

技术抽象:每天的从固定时间开始一个任务,在固定的时间结束一个任务,并且在这段时间期间,在一定的时间间隔内重复这个任务.

技术选型:我画了一个流程图,是我自己的理解,可能不全面欢迎指出:


正在沾沾自喜觉得发现解决方案的时候,新的需求来了:

原始需求:不同的生产线的开工时间和结束时间t以及时间间隔i不同.

技术分析::不同的任务类型读取不同的时间间隔i和时间刻t变量..也就是说,在上图中分析的t和i虽然是变量的配置,但是是一个全局配置变量,现在的要求是是一个局域变量.换而言之,也就相当于,现在每个任务类型开启不同的线程,每个线程都有一套不同的规则....

代码层次分析:

也就是开始是把定时参数(开始时间,时间间隔,结束时间)从配置表中读出来,然后,把定时任务放在这个定时规则之内.(startTime/endTime/和interval是全局变量)

现在,不得不先根据不同的定时任务,按产线的,调用定时任务,(startTime/endTime/和interval是局域变量)

我想到的初步方案是:按着不同的产线产生不同的线程,每个线程用自己的一套变量.

缺点:每个车间的产线不同,多了一层嵌套循环,而且在此基础上加上多线程的定时器的嵌套.系统性能会大大的降低.

最终的解决方案:

想到大学时候哲学课的时候老师给展示的一个图片,大道至简.后来和同事讨论后的最终结果是:所有的生产线放到一个列表中,建立一个表格来维护每个产线的上次执行时间和时间间隔.用一个时间间隔的定时器轮训所有的列表中的生产线,只要满足:上次执行时间+时间间隔>=系统时间,则执行改任务.

特点:这种解决方式,不是很精确,会有误差.但是基于现实需求是,每次的时间间隔是2h或者4h或者8h.而我们定时器的轮训时间间隔是10分钟一次,所以足以忽略的满足所有的要求.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值