一种任务处理方法和装置制造方法及图纸

技术编号:17406460 阅读:38 留言:0更新日期:2018-03-07 04:30
本发明专利技术实施例提供一种任务处理方法和装置,涉及计算机技术领域。本发明专利技术实施例的一种任务处理方法,包括:创建线程组线程池;调用任务调度方法,将当前待执行的任务集合传入任务调度方法中;当线程组线程池中有空闲的线程组时,通过任务调度方法将任务集合传入线程组以使线程组执行任务集合;当任务集合中有尚未执行的任务时,使用Future取消尚未执行的任务;当任务集合中有正在执行的任务时,使用中断机制来取消正在执行的任务;接收下一个待执行的任务集合。本发明专利技术实施例通过创建以线程组的方式存在的线程组线程池,由空闲的线程组执行任务集合,使得线程组线程池在接收一个任务集合之后,还能执行其他任务集合且可以取消任务。

A task processing method and device

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取消所述尚未执行的任务;当所述任务集合中有正在执行的任务时,使用中断机制来取消所述正在执行的任务;接收下一个待执行的任务集合。可选地,所述线程组执行所述任务集合,包括:将所述任务集合中的每个任务均存放在所述线程组的任务队列中;调用所述线程组的任务调度方法,返回每个任务的结果对象。可选地,所述方法还包括:将回调函数传入所述任务调度方法和所述线程组中。可选地,所述方法还包括:使用Get方法或者所述回调函数从所述结果对象中获取所述任务集合的执行结果。可选地,所述方法还包括:当所述线程组线程池中没有空闲的线程组且所述线程组线程池的任务队列未满时,将所述任务集合存放到所述任务队列中,以等待所述空闲的线程组来执行所述任务集合;当所述线程组线程池的任务队列已满时,使用拒绝策略来处理。为实现上述目的,根据本专利技术实施例的另一方面,提供了一种任务处理装置。本专利技术实施例的一种任务处理装置,包括:创建模块,用于创建线程组线程池,所述线程组线程池包括多个线程组,所述线程组包括多个线程;调用传入模块,用于调用任务调度方法,将当前待执行的任务集合传入所述任务调度方法中;任务集合传入模块,用于当所述线程组线程池中有空闲的线程组时,通过所述任务调度方法将所述任务集合传入所述线程组以使所述线程组执行所述任务集合;取消模块,用于当所述任务集合中有尚未执行的任务时,使用Future取消所述尚未执行的任务;当所述任务集合中有正在执行的任务时,使用中断机制来取消所述正在执行的任务;接收模块,用于接收下一个待执行的任务集合。可选地,任务集合传入模块,还用于:将所述任务集合中的每个任务均存放在所述线程组的任务队列中;调用所述线程组的任务调度方法,返回每个任务的结果对象。可选地,所述装置还包括:回调函数传入模块,用于将回调函数传入所述任务调度方法和所述线程组中。可选地,所述装置还包括:执行结果获取模块,用于使用Get方法或者回调函数从所述结果对象中获取所述任务集合的执行结果。可选地,所述装置还包括:任务集合存放模块,用于当所述线程组线程池中没有空闲的线程组且所述线程组线程池的任务队列未满时,将所述任务集合存放到所述任务队列中,以等待所述空闲的线程组来执行所述任务集合;拒绝策略处理模块,用于当所述线程组线程池的任务队列已满时,使用拒绝策略来处理。为实现上述目的,根据本专利技术实施例的再一方面,提供了一种电子设备。本专利技术实施例的一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本专利技术实施例的一种任务处理方法。为实现上述目的,根据本专利技术实施例的再一方面,提供了一种计算机可读介质。本专利技术实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本专利技术实施例的一种任务处理方法。上述专利技术中的一个实施例具有如下优点或有益效果:通过创建以线程组的方式存在的线程组线程池,由空闲的线程组具体执行任务集合,使得线程组线程池在接收一个任务集合之后,还能执行其他任务集合,提高线程组线程池的利用率;通过使用Future的Cancel方法取消尚未执行的任务或者使用中断机制取消正在执行的任务;通过回调函数的方式获取任务集合的执行结果,提供了一种新的获取执行结果的方式。上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术实施例的任务处理方法的主要步骤示意图;图2是现有技术的任务处理方法的主要流程示意图;图3是根据本专利技术实施例的通过Future方式获取执行结果的任务处理方法的流程图;图4是根据本专利技术实施例的通过回调函数获取执行结果的任务处理方法的流程图;图5是根据本专利技术实施例的任务处理装置的主要模块的示意图;图6是本专利技术实施例可以应用于其中的示例性系统架构图;图7是适用于来实现本专利技术实施例的电子设备的计算机装置的结构示意图。具体实施方式以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。本专利技术实施例的任务处理方法的核心实现为:线程组线程池只负责把任务集合丢给一个空闲的线程组,由该空闲的线程组具体执行任务集合,然后返回与该线程组相关的Future集合。通过上述方式实现异步,使得线程组线程池可以不用关心该线程组的执行结果,就可以继续执行其他任务集合。如果需要对Future集合进行处理,比如需要获取执行结果时,再从Future集合中获取;需要取消该任务集合时,调用Future的Cancel方法来取消。需要注意该方法只能取消正在执行或还未执行的任务,不能取消已经完成的任务。图1是根据本专利技术实施例的任务处理方法的主要步骤的示意图。如图1所示,本专利技术实施例的本文档来自技高网...
一种任务处理方法和装置

【技术保护点】
一种任务处理方法,其特征在于,包括:创建线程组线程池,所述线程组线程池包括多个线程组,所述线程组包括多个线程;调用任务调度方法,将当前待执行的任务集合传入所述任务调度方法中;当所述线程组线程池中有空闲的线程组时,通过所述任务调度方法将所述任务集合传入所述线程组以使所述线程组执行所述任务集合;当所述任务集合中有尚未执行的任务时,使用Future取消所述尚未执行的任务;当所述任务集合中有正在执行的任务时,使用中断机制来取消所述正在执行的任务;接收下一个待执行的任务集合。

【技术特征摘要】
1.一种任务处理方法,其特征在于,包括:创建线程组线程池,所述线程组线程池包括多个线程组,所述线程组包括多个线程;调用任务调度方法,将当前待执行的任务集合传入所述任务调度方法中;当所述线程组线程池中有空闲的线程组时,通过所述任务调度方法将所述任务集合传入所述线程组以使所述线程组执行所述任务集合;当所述任务集合中有尚未执行的任务时,使用Future取消所述尚未执行的任务;当所述任务集合中有正在执行的任务时,使用中断机制来取消所述正在执行的任务;接收下一个待执行的任务集合。2.根据权利要求1所述的方法,其特征在于,所述线程组执行所述任务集合,包括:将所述任务集合中的每个任务均存放在所述线程组的任务队列中;调用所述线程组的任务调度方法,返回每个任务的结果对象。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:将回调函数传入所述任务调度方法和所述线程组中。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:使用Get方法或者所述回调函数从所述结果对象中获取所述任务集合的执行结果。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述线程组线程池中没有空闲的线程组且所述线程组线程池的任务队列未满时,将所述任务集合存放到所述任务队列中,以等待所述空闲的线程组来执行所述任务集合;当所述线程组线程池的任务队列已满时,使用拒绝策略来处理。6.一种任务处理装置,其特征在于,包括:创建模块,用于创建线程组线程池,所述线程组线程池包括多个线程组,所述线程组包括多个线程;调用传入模块,用于调用任务调度方法,将当前待执行的任务集合传入所述任务调度方法中;任务集合传入模块,用于当所述线...

【专利技术属性】
技术研发人员:胡勇
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1