[发明专利]基于线程池的任务处理方法及装置在审
申请号: | 201910778864.9 | 申请日: | 2019-08-22 |
公开(公告)号: | CN110515715A | 公开(公告)日: | 2019-11-29 |
发明(设计)人: | 易存道 | 申请(专利权)人: | 北京宝兰德软件股份有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 11002 北京路浩知识产权代理有限公司 | 代理人: | 苗晓静<国际申请>=<国际公布>=<进入 |
地址: | 100020 北京市朝*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 线程 任务处理 线程池 级别类型 空闲线程 排队等待 任务队列 在线程池 第一线 保证 | ||
本发明实施例提供一种基于线程池的任务处理方法及装置,所述方法包括:在第一线程集中不存在空闲线程时,获取线程池中任务队列中的所有任务;当确定所有任务中存在级别类型为第一级别的任务时,将所述任务在第二线程集中的空闲线程上进行处理,所述第一级别为所有级别类型中最高的类型。本发明实施例提供的基于线程池的任务处理方法及装置,通过在线程池中划分专门处理紧急任务的线程集,当在其他线程集中线程被任务占满的情况下,能够及时对处于排队等待处理的紧急任务进行处理,保证紧急任务处理的及时有效性。
技术领域
本发明涉及信息处理技术领域,尤其涉及一种基于线程池的任务处理方法及装置。
背景技术
在网络环境中,为了保证服务响应速度,服务器处理网络请求时,往往会开启线程去对网络请求进行并发任务处理。然而线程如果开启过多,机器可能会不堪重负,甚至瘫痪。因此服务器往往采用线程池技术来处理网络请求。线程池一般会有一个最大线程数的设定,用来定义线程池最大的并发数,当同时处理的任务把线程池线程占满时,新的任务不会再次触发新的线程的建立,而是进入任务队列中。
目前线程池技术存在一个缺陷,当线程池中线程数达到最大数量且被任务占满时,新的任务只能等待这些任务处理结束才能被处理。这个会导致紧急的任务无法被及时处理,如果普通的任务由于死锁等原因永远不释放线程池线程,紧急任务将会永远得不到处理。这会导致服务器处于僵死状态,如果不想等待直接重启服务器,可能会导致之前的正常任务处理失败引发业务异常。
发明内容
针对现有技术存在的问题,本发明实施例提供一种基于线程池的任务处理方法及装置。
本发明实施例提供一种基于线程池的任务处理方法,包括:
在第一线程集中不存在空闲线程时,获取线程池中任务队列中的所有任务;
当确定所有任务中存在级别类型为第一级别的任务时,将所述任务在第二线程集中的空闲线程上进行处理,所述第一级别为所有级别类型中最高的类型;
其中,所述线程池设置第一线程集和第二线程集,所述第二线程集中的线程仅处理所述第一级别的任务。
可选地,还包括:
在所述第一线程集中存在空闲线程时,获取线程池中任务队列中排在最前位的任务;
当确定排在最前位的任务为第一级别的任务时,将排在最前位的任务在第一线程集中的空闲线程上进行处理。
可选地,所述确定所有任务中存在级别类型为第一级别的任务,包括:
对所有任务各对应的消息进行解析,获取各消息标志位上的信息;
当所述信息为第一标志类型时,确定对应消息对应的任务为第一级别的任务,所述第一标志类型为用于判断为第一级别的信息。
可选地,所述第一线程集中的线程数不超过预设的最大线程数,所述第一线程集和所述第二线程集中所建所有线程占有资源总量不超过服务器资源总量。
本发明实施例提供一种基于线程池的任务处理装置,包括:
第一获取模块,用于在第一线程集中不存在空闲线程时,获取线程池中任务队列中的所有任务;
第一处理模块,用于确定所有任务中存在级别类型为第一级别的任务时,将所述任务在第二线程集中的空闲线程上进行处理,所述第一级别为所有级别类型中最高的类型;
其中,所述线程池设置第一线程集和第二线程集,所述第二线程集中的线程仅处理所述第一级别的任务。
可选地,还包括:
第二获取模块,用于在所述第一线程集中存在空闲线程时,获取线程池中任务队列中排在最前位的任务;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京宝兰德软件股份有限公司,未经北京宝兰德软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910778864.9/2.html,转载请声明来源钻瓜专利网。