[发明专利]一种基于ICM的异常任务处理方法及装置有效
申请号: | 202010564552.0 | 申请日: | 2020-06-19 |
公开(公告)号: | CN111857987B | 公开(公告)日: | 2023-03-24 |
发明(设计)人: | 毕亮亮;刘正伟 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 济南诚智商标专利事务所有限公司 37105 | 代理人: | 李修杰 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 icm 异常 任务 处理 方法 装置 | ||
1.一种基于ICM的异常任务处理方法,其特征是,包括:
创建第一线程池,所述第一线程池用于执行系统中所有异步任务;
创建第二线程池,所述第二线程池与第一线程池相互独立,用于通过执行系统重启前第一线程池中未被调度以及已调度但未完成的异步任务,以避免使用第一线程池执行造成占用第一线程池资源,影响第一线程池后续任务加入执行;其中,所述创建第二线程池,所述第二线程池与第一线程池相互独立,用于通过执行系统重启前第一线程池中未被调度以及已调度但未完成的异步任务,以避免使用第一线程池执行造成占用第一线程池资源,影响第一线程池后续任务加入执行具体包括:
判断第一线程池中系统重启前的未执行完成的异步任务总数是否超过第一线程池的最大线程,其中,未执行完成的异步任务包括未调度的异步任务以及已调度但未执行完成的异步任务;
如果第一线程池中系统重启前的未执行完成的异步任务总数未超过第一线程池的最大线程,由第一线程池执行系统重启前的未执行完成的异步任务;如果第一线程池中系统重启前的未执行完成的异步任务总数超过第一线程池的最大线程,创建第二线程池,根据任务模块扫描数据库,查找第一线程池中未被调度的任务列表,依次将第一线程池中未被调度的任务列表中异步任务加入第二线程池中等待执行,直至第一线程池中未被调度的任务列表中所有异步任务处理完成;
根据任务模块扫描数据库,查找已调度但未完成的异步任务列表,依次将第一线程池中已调度但未完成的异步任务列表中异步任务加入第二线程池中等待执行;
监控第二线程池中已调度但未完成的异步任务的执行时间,如果第二线程池中已调度但未完成的异步任务超过第一时间周期,则设置为失败状态,并重新创建对应异步任务执行;
直至第二线程池中已调度但未完成的异步任务列表中所有异步任务处理完成后,关闭第二线程池;
对第一线程池以及第二线程池中异步任务分别设置第一时间周期,分别监控第一线程池以及第二线程池中异步任务的执行时间,如果第一线程池以及第二线程池中异步任务超过第一时间周期,则将超过第一时间周期的异步任务设置为失败状态,并重新创建对应异步任务执行。
2.根据权利要求1所述的基于ICM的异常任务处理方法,其特征是,所述第一线程池中的最大线程与核心线程大小相同。
3.根据权利要求1所述的基于ICM的异常任务处理方法,其特征是,还包括:在第一线程池以及第二线程池中均设置缓存队列,所述缓存队列用于存放暂时添加失败的任务。
4.根据权利要求3所述的基于ICM的异常任务处理方法,其特征是,还包括:创建第三线程池,所述第三线程池用于第一线程池以及第二线程池中异步任务的回调。
5.根据权利要求1所述的基于ICM的异常任务处理方法,其特征是,所述第二线程池的队列为同步队列。
6.一种基于ICM的异常任务处理装置,其特征是,包括:
第一创建模块,创建第一线程池,所述第一线程池用于执行系统中所有异步任务;
第二创建模块,创建第二线程池,所述第二线程池与第一线程池相互独立,用于通过执行系统重启前第一线程池中未被调度以及已调度但未完成的异步任务,以避免使用第一线程池执行造成占用第一线程池资源,影响第一线程池后续任务加入执行;其中,第二创建模块具体包括:
判断子模块,判断第一线程池中系统重启前的未执行完成的异步任务总数是否超过第一线程池的最大线程,其中,未执行完成的异步任务包括未调度的异步任务以及已调度但未执行完成的异步任务;
第一异步任务处理子模块,如果第一线程池中系统重启前的未执行完成的异步任务总数未超过第一线程池的最大线程,由第一线程池执行系统重启前的未执行完成的异步任务;如果第一线程池中系统重启前的未执行完成的异步任务总数超过第一线程池的最大线程,创建第二线程池,根据任务模块扫描数据库,查找第一线程池中未被调度的任务列表,依次将第一线程池中未被调度的任务列表中异步任务加入第二线程池中等待执行,直至第一线程池中未被调度的任务列表中所有异步任务处理完成;
查找加入子模块,根据任务模块扫描数据库,查找已调度但未完成的异步任务列表,依次将第一线程池中已调度但未完成的异步任务列表中异步任务加入第二线程池中等待执行;
第二监控子模块,监控第二线程池中已调度但未完成的异步任务的执行时间,如果第二线程池中已调度但未完成的异步任务超过第一时间周期,则设置为失败状态,并重新创建对应异步任务执行;
关闭子模块,直至第二线程池中已调度但未完成的异步任务列表中所有异步任务处理完成后,关闭第二线程池;
第一监控模块,对第一线程池以及第二线程池中异步任务分别设置第一时间周期,分别监控第一线程池以及第二线程池中异步任务的执行时间,如果第一线程池以及第二线程池中异步任务超过第一时间周期,则将超过第一时间周期的异步任务设置为失败状态,并重新创建对应异步任务执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010564552.0/1.html,转载请声明来源钻瓜专利网。