The embodiment of the invention provides a task processing method and device, which relates to the field of computer technology. A task processing method, the embodiment of the invention comprises: creating a thread pool thread group; the call task scheduling method, the task to be performed to set task scheduling method; when the thread group has idle threads in the thread pool group, the task scheduling methods task set into the thread group to make thread group task set; when the task set has not yet performed the task, use the Future to cancel the pending task; when the task set in task execution, using the interrupt mechanism to cancel the mission; receiving the task to be executed under a set of. The embodiment of the invention is implemented by creating a thread group thread pool existing in the way of thread group, and executing the task set by the idle thread group, enabling the thread group thread pool to perform other task sets after receiving a task set and cancel the task.
【技术实现步骤摘要】
一种任务处理方法和装置
本专利技术涉及计算机领域,尤其涉及一种任务处理方法和装置。
技术介绍
现有技术在进行任务处理时,必须要等待当前任务集合执行完毕后才能处理其他任务。以Java技术为例,如图2所示,实现任务处理的一般过程为:基于JDK(JavaDevelopmentKit,Java语言的软件开发工具包)线程池把多个任务封装到一个集合中,然后调用任务调度方法,当达到完成条件(比如所有任务都完成或者完成其中一个)后,线程池才能继续执行下一个任务。该任务调度方法为invokeAll方法或者invokeAny方法,invokeAll方法可以实现等待所有任务都完成的功能,invokeAny方法可以实现等待其中一个任务完成的功能。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:(1)线程池调用invokeAll方法或者invokeAny方法之后,线程池处于等待状态,不能处理其他任务,造成资源浪费。比如:线程池中有10个线程可以接收任务,现在传入3个任务的集合,就会使用线程池中的3个线程来执行。在等待这3个任务完成的过程中,剩余的7个线程处于空闲状态,从造成资源浪费。(2)由于线程池要等待任务完成,因此不能把正在执行或者尚未执行的任务取消掉。
技术实现思路
有鉴于此,本专利技术实施例提供一种任务处理方法和装置。本专利技术实施例通过创建以线程组的方式存在的线程组线程池,由空闲的线程组具体执行任务集合,使得线程组线程池在接收一个任务集合之后,还能执行其他任务集合,无需等待所有任务执行完成。当需要取消任务时,就可以通过Future的Cancel方法取消还未执 ...
【技术保护点】
一种任务处理方法,其特征在于,包括:创建线程组线程池,所述线程组线程池包括多个线程组,所述线程组包括多个线程;调用任务调度方法,将当前待执行的任务集合传入所述任务调度方法中;当所述线程组线程池中有空闲的线程组时,通过所述任务调度方法将所述任务集合传入所述线程组以使所述线程组执行所述任务集合;当所述任务集合中有尚未执行的任务时,使用Future取消所述尚未执行的任务;当所述任务集合中有正在执行的任务时,使用中断机制来取消所述正在执行的任务;接收下一个待执行的任务集合。
【技术特征摘要】
1.一种任务处理方法,其特征在于,包括:创建线程组线程池,所述线程组线程池包括多个线程组,所述线程组包括多个线程;调用任务调度方法,将当前待执行的任务集合传入所述任务调度方法中;当所述线程组线程池中有空闲的线程组时,通过所述任务调度方法将所述任务集合传入所述线程组以使所述线程组执行所述任务集合;当所述任务集合中有尚未执行的任务时,使用Future取消所述尚未执行的任务;当所述任务集合中有正在执行的任务时,使用中断机制来取消所述正在执行的任务;接收下一个待执行的任务集合。2.根据权利要求1所述的方法,其特征在于,所述线程组执行所述任务集合,包括:将所述任务集合中的每个任务均存放在所述线程组的任务队列中;调用所述线程组的任务调度方法,返回每个任务的结果对象。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:将回调函数传入所述任务调度方法和所述线程组中。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:使用Get方法或者所述回调函数从所述结果对象中获取所述任务集合的执行结果。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述线程组线程池中没有空闲的线程组且所述线程组线程池的任务队列未满时,将所述任务集合存放到所述任务队列中,以等待所述空闲的线程组来执行所述任务集合;当所述线程组线程池的任务队列已满时,使用拒绝策略来处理。6.一种任务处理装置,其特征在于,包括:创建模块,用于创建线程组线程池,所述线程组线程池包括多个线程组,所述线程组包括多个线程;调用传入模块,用于调用任务调度方法,将当前待执行的任务集合传入所述任务调度方法中;任务集合传入模块,用于当所述线...
【专利技术属性】
技术研发人员:胡勇,
申请(专利权)人:北京京东尚科信息技术有限公司,北京京东世纪贸易有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。