【技术实现步骤摘要】
延迟任务执行的方法和装置
本专利技术涉及计算机
,尤其涉及一种延迟任务执行的方法和装置。
技术介绍
目前,当需要对任务进行延迟执行的处理时,通常采用的方法是通过调用java的Thread.sleep()函数来实现,Thread.sleep()函数将执行任务的线程挂起一段时间,在需要延迟的时间结束后再将该线程唤醒,从而实现对于任务的延迟执行。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:首先,调用Thread.sleep()函数的方法,任务的延迟处理和任务的执行由同一台设备来进行,如果当执行任务的设备出现了问题,或重启,或重新部署时,该设备上所有的任务都将丢失,相应的任务的延迟信息也会丢失。并且,当需要同时延迟多个任务的执行的情况下,调用Thread.sleep()函数的方法,需要对每一个任务启动一个线程,在每个线程中分别执行Thread.sleep()函数,如果同时延迟的任务过多,就会出现线程膨胀的问题,设备会由于启动很多线程而被拖垮,系统稳定性较低。因此,亟需一种能够支持分布式延迟处理,且延迟多个任务的执行时不需要启动过多线程的延迟任务 ...
【技术保护点】
一种延迟任务执行的方法,其特征在于,所述方法通过预设的队列存放所述任务,所述队列包括窗口,所述方法包括:按照预设的时长为T的时间周期从所述队列中的特定窗口中取出该窗口中的所有任务,该用于取出任务的窗口通过取出任务的时间确定,其中,当添加任务时,根据添加任务的当前时间确定所述队列中用于添加任务的窗口,以将任务添加入该窗口中,其中,该用于添加任务的窗口与预设的延迟时长KT之后的所述时间周期中确定的用于取出任务的窗口为同一窗口,所述K为正整数;执行所述取出的任务。
【技术特征摘要】
1.一种延迟任务执行的方法,其特征在于,所述方法通过预设的队列存放所述任务,所述队列包括窗口,所述方法包括:按照预设的时长为T的时间周期从所述队列中的特定窗口中取出该窗口中的所有任务,该用于取出任务的窗口通过取出任务的时间确定,其中,当添加任务时,根据添加任务的当前时间确定所述队列中用于添加任务的窗口,以将任务添加入该窗口中,其中,该用于添加任务的窗口与预设的延迟时长KT之后的所述时间周期中确定的用于取出任务的窗口为同一窗口,所述K为正整数;执行所述取出的任务。2.根据权利要求1所述的方法,其特征在于,所述队列划分为第一队列和第二队列,当确定的所述用于添加任务的窗口位于所述第一和第二队列两者中任一时,同一时间确定的所述用于取出任务的窗口位于所述第一和第二队列两者中的另一队列。3.根据权利要求2所述的方法,其特征在于,所述第一队列和第二队列包括:序号分别为0至K-1的K个窗口,所述根据添加任务的当前时间确定所述队列中用于添加任务的窗口包括:计算添加任务的当前时间与预设时间的差除以K的商再除以2的余数,若该余数为0,则用于添加任务的窗口所在的队列为所述第一队列,若该余数为1,则用于添加任务的窗口所在的队列为所述第二队列,计算当前时间与预设时间的差除以K的余数,作为用于添加任务的窗口在队列中的序号。4.根据权利要求3所述的方法,其特征在于,根据取出任务的时间确定用于取出任务的窗口包括:计算取出任务的当前时间与预设时间的差除以K的商再除以2的余数,若该余数为0,则用于取出任务的窗口所在的队列为所述第二队列,若该余数为1,则用于取出任务的窗口所在的队列为所述第一队列,计算取出任务的当前时间与预设时间的差除以K的余数,作为用于取出任务的窗口在队列中的序号。5.根据权利要求1至4任一项所述的方法,其特征在于,当检测到设备离线时添加任务,所述任务包括:离线设备的ID和离线时间,所述执行所述取出的任务包括:根据取出的所述任务中所述离线设备的ID和离线时间判断对应的离线设备在所述延迟时长KT内是否上线;若未上线,则进行告警。6.一种延迟任务执行的装置,其特征在于,包括:存储模块,用于通过预设的队列存放所述任务,所述队列包括窗口;任务取出模块,用于按照预设的时长为T的时间周期从所述队列中的特定窗...
【专利技术属性】
技术研发人员:马盼盼,魏大安,
申请(专利权)人:北京京东尚科信息技术有限公司,北京京东世纪贸易有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。