一种定时任务超时的控制方法
文献发布时间:2023-06-19 09:26:02
技术领域
本发明涉及计算机算法领域,特别涉及一种定时任务超时的控制方法。
背景技术
目前由于任务调度中间件没有设置超时的机制,当处理数据库相关业务时,若数据库出现问题或其它异常导致出现卡死的情况时,同类业务的任务不会自动终止,导致业务量处理堆积。并且当任务量很大时,可能需要维护大量的timer,或者进行低效的扫描。
发明内容
为了克服现有技术的不足,本发明提供一种定时任务超时的控制方法。
本发明解决其技术问题所采用的技术方案是:
一种定时任务超时的控制方法,包括以下步骤:
步骤一:从集合Map结构中,查找出唯一标识uid存储在盐值slot中的位置;
步骤二:从所述的盐值slot的有序集合Set结构中,删除所述唯一标识uid;
步骤三:将唯一标识uid重新加入到新的盐值slot中;
步骤四:更新集合Map以及所述唯一标识uid对应盐值slot的index值。
进一步地,在步骤一之前还包括:启动一个定时器timer,每隔设定的时间间隔,在环形链表中移动一位。
进一步地,所述时间间隔为1s。
进一步地,启动一个定时器timer之后还包括:设有一个当前索引Current Index指针来标识刚检测过的盐值slot。
进一步地,步骤三中所述新的盐值slot为当前索引Current Index指针所指向的上一个盐值slot。
如果没有超时任务,当前索引Current Index扫描到的每一个盐值slot的有序集合Set中都没有元素。
本发明的有益效果是:本发明一种定时任务超时的控制方法减少定时任务超时导致出现卡死的情况,避免导致业务量处理堆积。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1是本发明一种定时任务超时的控制方法的环形队列原理图。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整地描述,以充分地理解本发明的目的、特征和效果。显然,所描述的实施例只是本发明的一部分实施例,而不是全部实施例,基于本发明的实施例,本领域的技术人员在不付出创造性劳动的前提下所获得的其他实施例,均属于本发明保护的范围。另外,专利中涉及到的所有联接/连接关系,并非单指构件直接相接,而是指可根据具体实施情况,通过添加或减少联接辅件,来组成更优的联接结构。本发明创造中的各个技术特征,在不互相矛盾冲突的前提下可以交互组合。
参考图1,本发明解决其技术问题所采用的技术方案是:
一种定时任务超时的控制方法,包括以下步骤:
步骤一:从集合Map结构中,查找出唯一标识uid存储在盐值slot中的位置;
步骤二:从所述的盐值slot的有序集合Set结构中,删除所述唯一标识uid;
步骤三:将唯一标识uid重新加入到新的盐值slot中;
步骤四:更新集合Map以及所述唯一标识uid对应盐值slot的index值。
进一步地,在步骤一之前还包括:启动一个定时器timer,每隔设定的时间间隔,在环形链表中移动一位。
进一步地,所述时间间隔为1s。
进一步地,启动一个定时器timer之后还包括:设有一个当前索引Current Index指针来标识刚检测过的盐值slot。
进一步地,步骤三中所述新的盐值slot为当前索引Current Index指针所指向的上一个盐值slot。
如果没有超时任务,当前索引Current Index扫描到的每一个盐值slot的有序集合Set中都没有元素。
现举一个业务场景示例:对每个用户会维护一个APP到服务器的TCP连接,用来实时收发信息,对这个TCP连接,如果连续30s没有请求包,服务端就要将这个连接断开:
(1)设置30s超时,就创建一个index从0到30的环形队列(本质上数组);
(2)环上每一个slot是一个Set
(3)同时还有一个Map
哪些元素会被超时删除掉?
Current Index每秒移动一个slot,这个slot对应的Set
所以,当没有超时时,Current Index扫描到的每一个Slot的Set中应该都没有元素。
本发明的有益效果是:本发明一种定时任务超时的控制方法减少定时任务超时导致出现卡死的情况,避免导致业务量处理堆积。采用此种定时任务超时的控制方法可以提高添加任务、删除任务以及取消任务的效率,可以更好地平衡任务处理的时间与效率。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
- 一种定时任务超时的控制方法
- 一种电视机定时任务控制方法及电视机