[发明专利]一种任务处理方法和装置在审
申请号: | 201710961495.8 | 申请日: | 2017-10-16 |
公开(公告)号: | CN107766137A | 公开(公告)日: | 2018-03-06 |
发明(设计)人: | 胡勇 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 中原信达知识产权代理有限责任公司11219 | 代理人: | 张一军,杨晓伟 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 任务 处理 方法 装置 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种任务处理方法和装置。
背景技术
现有技术在进行任务处理时,必须要等待当前任务集合执行完毕后才能处理其他任务。以Java技术为例,如图2所示,实现任务处理的一般过程为:基于JDK(Java Development Kit,Java语言的软件开发工具包)线程池把多个任务封装到一个集合中,然后调用任务调度方法,当达到完成条件(比如所有任务都完成或者完成其中一个)后,线程池才能继续执行下一个任务。该任务调度方法为invokeAll方法或者invokeAny方法,invokeAll方法可以实现等待所有任务都完成的功能,invokeAny方法可以实现等待其中一个任务完成的功能。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
(1)线程池调用invokeAll方法或者invokeAny方法之后,线程池处于等待状态,不能处理其他任务,造成资源浪费。比如:线程池中有10个线程可以接收任务,现在传入3个任务的集合,就会使用线程池中的3个线程来执行。在等待这3个任务完成的过程中,剩余的7个线程处于空闲状态,从造成资源浪费。
(2)由于线程池要等待任务完成,因此不能把正在执行或者尚未执行的任务取消掉。
发明内容
有鉴于此,本发明实施例提供一种任务处理方法和装置。本发明实施例通过创建以线程组的方式存在的线程组线程池,由空闲的线程组具体执行任务集合,使得线程组线程池在接收一个任务集合之后,还能执行其他任务集合,无需等待所有任务执行完成。当需要取消任务时,就可以通过Future的Cancel方法取消还未执行的任务,通过中断机制取消正在执行的任务。。
为实现上述目的,根据本发明实施例的一个方面,提供了一种任务处理方法。
本发明实施例的一种任务处理方法,包括:创建线程组线程池,所述线程组线程池包括多个线程组,所述线程组包括多个线程;调用任务调度方法,将当前待执行的任务集合传入所述任务调度方法中;当所述线程组线程池中有空闲的线程组时,通过所述任务调度方法将所述任务集合传入所述线程组以使所述线程组执行所述任务集合;当所述任务集合中有尚未执行的任务时,使用Future取消所述尚未执行的任务;当所述任务集合中有正在执行的任务时,使用中断机制来取消所述正在执行的任务;接收下一个待执行的任务集合。
可选地,所述线程组执行所述任务集合,包括:将所述任务集合中的每个任务均存放在所述线程组的任务队列中;调用所述线程组的任务调度方法,返回每个任务的结果对象。
可选地,所述方法还包括:将回调函数传入所述任务调度方法和所述线程组中。
可选地,所述方法还包括:使用Get方法或者所述回调函数从所述结果对象中获取所述任务集合的执行结果。
可选地,所述方法还包括:当所述线程组线程池中没有空闲的线程组且所述线程组线程池的任务队列未满时,将所述任务集合存放到所述任务队列中,以等待所述空闲的线程组来执行所述任务集合;当所述线程组线程池的任务队列已满时,使用拒绝策略来处理。
为实现上述目的,根据本发明实施例的另一方面,提供了一种任务处理装置。
本发明实施例的一种任务处理装置,包括:创建模块,用于创建线程组线程池,所述线程组线程池包括多个线程组,所述线程组包括多个线程;调用传入模块,用于调用任务调度方法,将当前待执行的任务集合传入所述任务调度方法中;任务集合传入模块,用于当所述线程组线程池中有空闲的线程组时,通过所述任务调度方法将所述任务集合传入所述线程组以使所述线程组执行所述任务集合;取消模块,用于当所述任务集合中有尚未执行的任务时,使用Future取消所述尚未执行的任务;当所述任务集合中有正在执行的任务时,使用中断机制来取消所述正在执行的任务;接收模块,用于接收下一个待执行的任务集合。
可选地,任务集合传入模块,还用于:将所述任务集合中的每个任务均存放在所述线程组的任务队列中;调用所述线程组的任务调度方法,返回每个任务的结果对象。
可选地,所述装置还包括:回调函数传入模块,用于将回调函数传入所述任务调度方法和所述线程组中。
可选地,所述装置还包括:执行结果获取模块,用于使用Get方法或者回调函数从所述结果对象中获取所述任务集合的执行结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710961495.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种夏季配合饲料
- 下一篇:一种含山楂果干粉的饲料配方