[发明专利]SOA架构下的多线程请求方法及系统有效
| 申请号: | 201310293394.X | 申请日: | 2013-07-12 |
| 公开(公告)号: | CN104281489B | 公开(公告)日: | 2017-11-21 |
| 发明(设计)人: | 李伟 | 申请(专利权)人: | 上海携程商务有限公司 |
| 主分类号: | G06F9/46 | 分类号: | G06F9/46;H04L29/06 |
| 代理公司: | 上海弼兴律师事务所31283 | 代理人: | 王聪 |
| 地址: | 200335 上海市*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | soa 架构 多线程 请求 方法 系统 | ||
1.一种SOA架构下的多线程请求方法,其特征在于,包括以下步骤:
S1、接收至少一子系统发出的至少一组服务请求,将该至少一组服务请求的状态分别记录为执行中;
S2、在一线程池中创建至少一个线程,该至少一个线程和执行中状态的服务请求一一对应,该至少一个线程进入一等待队列,该等待队列用于按创建时间从早到晚的顺序依次排列线程;
S3、判断该线程池中正在执行的线程数量是否小于一最大并发数,在判断结果为否的情况下重复执行S3,在判断结果为是的情况下执行S4;
S4、顺序依次选取该等待队列中的线程并执行,以使得正在执行的线程数量等于该最大并发数;
S5、判断是否有任意一组或多组的服务请求对应的线程已全部从该线程池中移除,在判断结果为否的情况下执行S3,在判断结果为是的情况下执行S6;
S6、将该任意一组或多组的服务请求的状态更改为执行完毕;
S7、将该任意一组或多组的服务请求对应的线程执行的结果分别返回至发出该任意一组或多组的服务请求的子系统,并执行S3。
2.如权利要求1所述的多线程请求方法,其特征在于,每一组服务请求均包含了请求用户的信息,在执行S1后执行以下步骤:
S11、判断该至少一组服务请求的请求用户中,是否有一个或多个请求用户创建的、执行中状态的服务请求对应的线程数量达到该一个或多个请求用户的线程阈值,在判断结果为否的情况下执行S2,在判断结果为是的情况下执行S12;
S12、将该一个或多个请求用户发出的一组或多组服务请求更改为延迟执行状态,并执行S2;
S6和S7之间还包括以下步骤:
S61、对于该一个或多个请求用户,判断其创建的、执行中状态的服务请求对应的线程数量是否小于其线程阈值,并在判断结果为是的情况下将该一个或多个请求用户发出的、并处于延迟执行状态的服务请求更改为执行中状态;
S62、在该线程池中创建和S61中更改为执行中状态的服务请求一一对应的线程,创建的线程进入该等待队列,并执行S7。
3.如权利要求1所述的多线程请求方法,其特征在于,S3包括以下步骤:
S31、若该线程池中的线程数量小于一最小线程数,创建空线程以使得线程数量等于该最小线程数;
S32、判断该线程池中正在执行的线程数量是否小于一最大并发数,在判断结果为否的情况下等待,在判断结果为是的情况下执行S4。
4.如权利要求1-3中任意一项所述的多线程请求方法,其特征在于,每个步骤中均包括:
记录每一组服务请求的状态及对应时刻,并记录该线程池的状态。
5.一种SOA架构下的多线程请求系统,包括一系统总线和至少一子系统,该至少一子系统可相互发送服务请求,其特征在于,该多线程请求系统还包括:
一接收模块,用于接收该至少一子系统发出的至少一组服务请求;
一线程创建模块,用于在一线程池中创建至少一个线程、该至少一个线程和执行中状态的服务请求一一对应,并将该至少一个线程放入一等待队列、该等待队列用于按创建时间从早到晚的顺序依次排列线程;
一线程管理模块,用于顺序依次选取该等待队列中的线程并执行,以使得正在执行的线程数量为小于或等于一最大并发数的最大值;
一状态指示模块,用于在该接收模块接收该至少一组服务请求时将该至少一组服务请求的状态记录为执行中,以及在任意一组或多组的服务请求对应的线程已全部从该线程池中移除时将该任意一组或多组服务请求的状态更改为执行完毕;
一结果返回模块,用于将该任意一组或多组的服务请求对应的线程执行的结果分别返回至发出该任意一组或多组的服务请求的子系统。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海携程商务有限公司,未经上海携程商务有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310293394.X/1.html,转载请声明来源钻瓜专利网。





