CN113391910A - 任务处理方法、装置、计算机设备及存储介质 - Google Patents

任务处理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN113391910A
CN113391910A CN202110724730.6A CN202110724730A CN113391910A CN 113391910 A CN113391910 A CN 113391910A CN 202110724730 A CN202110724730 A CN 202110724730A CN 113391910 A CN113391910 A CN 113391910A
Authority
CN
China
Prior art keywords
target
thread pool
task
thread
public
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110724730.6A
Other languages
English (en)
Inventor
刘洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Weikun Shanghai Technology Service Co Ltd
Original Assignee
Weikun Shanghai Technology Service Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Weikun Shanghai Technology Service Co Ltd filed Critical Weikun Shanghai Technology Service Co Ltd
Priority to CN202110724730.6A priority Critical patent/CN113391910A/zh
Publication of CN113391910A publication Critical patent/CN113391910A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明实施例公开了一种任务处理方法、装置、计算机设备及存储介质。所述方法包括:获取目标任务;然后根据所述目标任务的目标任务类型,从预设的多个子线程池中确定与所述目标任务对应的目标线程池;再判断所述目标线程池是否存在空余处理能力;若所述目标线程池存在空余处理能力,则通过所述目标线程池处理所述目标任务;若所述目标线程池不存在空余处理能力,则通过预设的公共线程池处理所述目标任务。本方案中,当子线程池没有空余处理能力时,可以向公共线程池租借线程,以处理目标任务,无须为每个子线程池设置固定的最大处理性能,子线程池可以实现自动弹性扩容,提高了线程的利用率。

Description

任务处理方法、装置、计算机设备及存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种任务处理方法、装置、计算机设备及存储介质。
背景技术
随着计算机硬件的快速发展,摩尔定律逐渐不再有效,现代服务器多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升系统性能的基本武器。
现有技术中,为了帮助开发管理线程并方便的执行任务,提供了线程池进行任务的处理,而且为了避免处理不同的任务类型的任务时,导致线程之间的干扰,技术人员设计了多个线程池分别对不同的任务类型的任务进行处理,为了保证各个任务类型的任务的处理能力,技术人员对每个线程池都设置了最大的处理性能,但是,每个线程池只是偶尔会使用到最大的处理性能,所以对每个线程池都设置最大的处理性能,会导致线程资源被大量创建而没有使用,浪费线程资源,线程的利用率低。
发明内容
本发明实施例提供了一种任务处理方法、装置、计算机设备及存储介质,可以提高线程的利用率。
第一方面,本发明实施例提供了一种任务处理方法,其包括:
获取目标任务;
根据所述目标任务的目标任务类型,从预设的多个子线程池中确定与所述目标任务对应的目标线程池;
判断所述目标线程池是否存在空余处理能力;
若所述目标线程池存在所述空余处理能力,则通过所述目标线程池处理所述目标任务;
若所述目标线程池不存在所述空余处理能力,则通过预设的公共线程池处理所述目标任务。
第二方面,本发明实施例还提供了一种任务处理装置,其包括:
获取单元,用于获取目标任务;
第一确定单元,用于根据所述目标任务的目标任务类型,从预设的多个子线程池中确定与所述目标任务对应的目标线程池;
判断单元,用于判断所述目标线程池是否存在空余处理能力;
第一处理单元,用于当所述目标线程池存在所述空余处理能力时,通过所述目标线程池处理所述目标任务;
第二处理单元,用于当所述目标线程池不存在所述空余处理能力时,通过预设的公共线程池处理所述目标任务。
第三方面,本发明实施例还提供了一种计算机设备,其包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现上述方法。
本发明实施例提供了一种任务处理方法、装置、计算机设备及存储介质。其中,所述方法包括:获取目标任务;然后根据所述目标任务的目标任务类型,从预设的多个子线程池中确定与所述目标任务对应的目标线程池;再判断所述目标线程池是否存在空余处理能力;若所述目标线程池存在空余处理能力,则通过所述目标线程池处理所述目标任务;若所述目标线程池不存在空余处理能力,则通过预设的公共线程池处理所述目标任务。本方案中,当子线程池没有空余处理能力时,可以向公共线程池租借线程,以处理目标任务,无须为每个子线程池设置固定的最大处理性能,子线程池可以实现自动弹性扩容,提高了线程的利用率。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的任务处理方法的应用场景示意图;
图2为本发明实施例提供的任务处理方法的流程示意图;
图3为本发明实施例提供的任务处理方法的一子流程示意图;
图4为本发明实施例提供的任务处理方法的另一子流程示意图;
图5为本发明实施例提供的任务处理方法的另一子流程示意图;
图6为本发明实施例提供的任务处理方法的另一子流程示意图;
图7为本发明实施例提供的任务处理装置的示意性框图;
图8为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本发明实施例提供了一种任务处理方法、装置、计算机设备及存储介质。
该任务处理方法的执行主体可以是本发明实施例提供的任务处理装置,或者集成了该任务处理装置的计算机设备,其中,该任务处理装置可以采用硬件或者软件的方式实现,该计算机设备可以为终端或服务器,该终端可以是智能手机、平板电脑、掌上电脑、或者笔记本电脑等。
请参阅图1,图1为本发明实施例提供的任务处理方法的应用场景示意图。该任务处理方法应用于图1中的计算机设备10中,该计算机设备10中设置有弹性线程模型,该弹性线程模型基于JDK ThreadPoolExecutor实现,该弹性线程模型由多个子线程池(例如n个之线程池,n为大于1的整数)以及1个公共线程池构成,其中,不同的子线程池用于对不同的任务类型进行处理,以根据任务类型对不同的任务进行隔离,避免由于某一任务类型存在代码等问题导致线程对任务的处理任务慢,而拖累所有类型的任务的处理速度的问题。
弹性线程模型中的子线程池可以向公共线程池进行线程的租借,实现弹性扩容,所以本实施例中的子线程池不需要设置太大的处理性能,避免线程资源被大量创建而没有使用,导致浪费线程资源,线程的利用率低的问题。
在图1中,当计算机设备10接收到服务器20发送的目标任务的时候;会根据目标任务的目标任务类型,从预设的多个子线程池中确定与目标任务对应的目标线程池;然后再判断目标线程池是否存在空余处理能力;如果目标线程池存在空余处理能力,则通过目标线程池处理目标任务;如果目标线程池不存在空余处理能力,则向公共线程池处理租借线程以处理目标任务。
本实施例中的线程池都设置有一定数量的核心线程数(corePoolSize),以及最大线程数(maximumPoolSize),其中,corePoolSize为线程池的基本大小,即在没有任务需要执行的时候线程池的大小,并且只有在工作队列满了的情况下才会创建超出这个数量的线程;maximumPoolSize为线程池中允许的最大线程数,线程池中的当前线程数目不会超过该值。如果阻塞队列中任务已满,并且当前线程个数小于maximumPoolSize,那么会创建新的线程来执行任务。
本实施例中,每个任务优先使用自己的线程池(即与任务类型对应的子线程池),当自己的线程池资源都使用完就从一个公共线程池中租借线程,这样平时大部分情况都可以满足,突发流量高峰时也可以满足,不用频繁的去调整线程池大小,也不用担心线程资源被大量创建而没有使用。
以下对本实施例中的任务处理方法进行详细说明,其中,以下实施例以服务器为执行主体为例,请参阅图2,图2是本发明实施例提供的任务处理方法的流程示意图。如图2所示,该方法包括以下步骤S110-150。
S110、获取目标任务。
本实施中,目标任务可以为IO密集型任务也可以为CPU密集型任务,当有任务需要服务器处理时,其他服务器或终端会发送目标任务给该服务器,其中,目标任务为需要服务器当前进行处理的任务。
S120、根据目标任务的目标任务类型,从预设的多个子线程池中确定与目标任务对应的目标线程池。
本实施例中的服务器设置有多个子线程池以及一个公共线程池,其中,每个子线程池分别处理一个或多个特定的任务类型的的任务,本实施例中的目标任务类型为多个子线程池中与目标任务的目标任务类型对应的线程池。
在一些实施例中,当确定了与目标任务对应的目标线程池之后,将进一步判断目标线程池是否在运行状态,如果在运行状态,则进一步判断目标线程池是否存在空余处理能力,如果不在运行状态,则此时直接拒绝处理该目标任务,保证目标线程池在运行的状态下执行任务,目标线程池不在运行状态则说明此时不需要对目标任务类型的任务进行处理,此时直接拒绝接收到的目标任务,不需要将该目标任务发送给公共线程池处理,避免占用公共线程池的资源。
S130、判断目标线程池是否存在空余处理能力,若是,则执行步骤S140,若否,则执行步骤S150。
本实施例中,当确定了目标任务对应的目标线程池之后,需要对目标线程池的空余处理能力进行判断,如果还有空余处理能力就通过目标线程池处理该目标任务,如果没有空余能力,则向公共线程池租借线程(具体表现为将目标任务发送给公共线程池中的线程进行处理)。
具体地,在一些实施例中,请参阅图3,步骤S130包括:
S131、判断目标线程池中的工作线程数是否小于预设的最大目标线程数,若是,则执行步骤S132,若否,则执行步骤S133。
其中,最大目标线程数为目标线程池的maximumPoolSize。
S132、确定目标线程池存在空余处理能力。
其中,目标线程池存在空余处理能力存在三种情况,第一种:目标线程池中的工作线程数(workerCount)小于核心线程数,第二种:工作线程数大于或等于核心线程数,并且阻塞队列中任务未满(即目标线程池的阻塞队列中现有的排队任务数小于目标阻塞任务阈值,目标阻塞任务阈值为目标线程池对应的阻塞任务中的最大排队任务数),第三种:工作线程数大于或等于核心线程数,并且阻塞队列中任务已满,但是工作线程数小于最大目标线程数。
其中,针对以上提及的目标线程池存在空余处理能力存在三种情况,本方案分别提供不同的处理方法,具体见步骤S140。
S133、确定目标线程池不存在空余处理能力。
本实施例中,如果目标线程池没有空余处理能力,则此时,需要向公共线程池租借线程,让公共线程池中的线程对目标任务进行处理。
其中,在一些实施例中,在判断目标线程池是否存在空余处理能力的时候,首先判断目标线程池中的工作线程数是否小于预设的最大目标线程数,而不需要进行工作线程数与核心线程数的比较,以及目标阻塞队列中的排队任务数与目标阻塞任务阈值的比较等,在突发流量高峰时,可以加快目标线程池有没有空余处理能力的判断速度,进行工作线程数与最大目标线程数的比较之后,直接确定是否需要租借公共线程池中的线程,提高任务的处理速度。
在另一些实施例中,步骤S130包括:判断目标线程池中的工作线程数是否小于核心线程数,若目标线程池中的工作线程数小于核心线程数,则证明该目标线程池存在空余处理能力,若目标线程池中的工作线程数大于或等于核心线程数,则再判断目标阻塞队列中的排队任务数是否小于预设的目标阻塞任务阈值,如果目标阻塞队列中的排队任务数小于预设的目标阻塞任务阈值,则证明该目标线程池存在空余处理能力,如果目标阻塞队列中的排队任务数等于预设的目标阻塞任务阈值,则此时再判断目标线程池中的工作线程数是否小于预设的最大目标线程数,若小于,则证明该目标线程池存在空余处理能力,若不小于,则证明该目标线程池不存在空余处理能力。
再在另一些实施例中,步骤S130包括:判断目标线程池中的工作线程数是否小于预设的核心线程数,若目标线程池中的工作线程数小于预设的核心线程数,则确定目标线程池存在空余处理能力,若目标线程池中的工作线程数不小于预设的核心线程数,则确定目标线程池不存在空余处理能力,此时,确定目标线程池没有核心线程数就立即向公共线程池租借线程,避免由于目标线程池中创建线程的时间长而导致的任务处理速度慢的问题,提高任务的处理速度。
S140、通过目标线程池处理目标任务。
本实施例中,若目标线程池存在空余处理能力,则此时就通过与目标任务对应的目标线程池处理该目标任务,具体的,请参阅图4,步骤S140包括:
S141、判断目标线程池中的工作线程数是否小于目标核心线程数,若是,则执行步骤S142,若否,则执行步骤S143。
本实施例中,当确定了目标任务对应的目标线程池之后,会首先判断目标线程池中的工作线程数是否小于目标核心线程数,然后根据判断结果进行目标任务的处理,其中,目标核心线程数为目标线程池对应的核心线程数。
S142、调用目标线程池中的目标核心线程处理目标任务。
若目标线程池中的工作线程数小于目标核心线程数,则此时说明目标线程池中存在空闲的核心线程,将该空闲的核心线程确定为目标核心线程,直接调用目标核心线程处理目标任务,不需要在创建新的线程,提高任务的处理速度。
S143、判断目标线程池对应的目标阻塞队列中的排队任务数是否小于预设的目标阻塞任务阈值,若是,则执行步骤S144,若否,则执行步骤S145。
若目标线程池中的工作线程数大于或等于目标核心线程数,则此时说明核心线程数已经全部被使用,此时需要进一步判断目标线程池对应的目标阻塞队列中的排队任务数是否小于预设的目标阻塞任务阈值,其中,该目标阻塞任务阈值为目标线程池中目标阻塞队列中可进行排队等待的最大的任务数。
S144、将目标任务加入目标阻塞队列中,以等待目标核心线程处理目标任务。
若目标阻塞队列中的排队任务数小于目标阻塞任务阈值,则此时说明目标阻塞队列中还有空余的位置,此时可以将目标任务加入该目标阻塞队列中,进行排队,以等待目标核心线程处理目标任务。
S145、创建目标线程以处理目标任务。
本实施例中,根据步骤S131已经判断了目标线程池中的工作线程数小于最大目标线程数,则说明目标线程池还可以进行线程的创建,此时若目标阻塞队列中的排队任务数等于目标阻塞任务阈值,则说明目标阻塞队列已满,此时可以在目标线程池中创建新的目标线程以处理目标任务。
S150、通过预设的公共线程池处理目标任务。
本实施例中,如果目标线程池中的工作线程数已经达到了最大目标线程数,则此时说明目标线程池没有了空余处理能力了,此时可以向公共线程池租借线程,以处理目标任务,具体表现为,将目标任务发送给公共线程池,以使得公共线程池处理该目标任务。
在一些实施例中,请参阅图5,步骤S150包括:
S151、判断公共线程池中目标线程的比例是否小于预设阈值,若是,则执行步骤S152,若否,则执行步骤S153。
其中,该目标线程为公共线程池中正在处理目标任务类型的任务的线程。该预设阈值可以为10%,也可以根据具体情况设置为其它数值,具体此处不做限定。
本实施例中,公共线程池为每个子线程池都分别设置了租借上限,避免将公共线程池中所有的线程都租借给一个子线程。
如果某一个子线程对应的任务类型的任务存在问题,导致线程处理该任务类型的任务时的处理速度很慢,如果把公共线程池中的线程都租借给处理有问题的任务,此时会导致公共线程池使用不合理,该子线程占用了公共线程池,也影响其他子线程对公共线程池进行租借,所以本实施例中对每个子线程池都设置有对应的预设阈值,其中,本发明可以根据每一个子线程池的处理业务分别为每一个子线程池设置不用的预设阈值。
S152、通过公共线程池处理目标任务。
若公共线程池中目标线程的比例小于预设阈值,则此时可以向公共线程池租借线程,通过公共线程池处理目标任务。
S153、拒绝处理目标任务。
若公共线程池中目标线程的比例不小于预设阈值,则说明此时公共线程池租借给目标线程池的线程已经足够多了,此时不能再租借线程给目标线程池了,此时直接拒绝执行该目标任务。
在另一些实施例中,具体地,请参阅图6,步骤S150包括:
B151、判断公共线程池中的工作线程数是否小于公共核心线程数,若是,则执行步骤B152,若否,则执行步骤B153。
本实施例中,公共核心线程数为公共线程池中的核心线程数,若确定向公共线程池中租借线程,此时,需要确定公共线程池如何进行线程的租借,首先,进行公共线程池中的工作线程数是否小于公共核心线程数的判断。
B152、调用公共线程池中的公共核心线程处理目标任务。
本实施例中,若公共线程池中的工作线程数小于公共核心线程数,则说明公共线程池中还存在剩余的公共核心线程,此时直接调用剩余的公共线程池中的公共核心线程处理目标任务。
其中,公共线程池中的工作线程数为公共线程池中租借给子线程池的线程数。
B153、根据公共线程池内公共阻塞队列中的排队任务数处理目标任务。
若公共线程池中的工作线程数大于或等于核心线程数,则此时根据公共线程池内公共阻塞队列中的排队任务数处理目标任务。
在一些实施例中,步骤B153包括:判断公共阻塞队列中的排队任务数是否小于预设的公共阻塞任务阈值;若公共阻塞队列中的排队任务数小于公共阻塞任务阈值,则将目标任务加入公共阻塞队列中,以等待公共核心线程处理目标任务;若公共阻塞队列中的排队任务数等于公共阻塞任务阈值,则判断公共线程池中的工作线程数是否小于预设的最大公共线程数;若公共线程池中的工作线程数小于预设的最大公共线程数,则创建公共线程以处理目标任务,若公共线程池中的工作线程数不小于预设的最大公共线程数,则此时,线程租借失败,拒绝处理目标任务。
需要说明的是,图6对应的实施例同样适用步骤S152的扩展。
本实施例中,公共线程池中租借出来的线程需要把该线程池阻塞队列中的任务全部消化之后才会把该线程资源归还给公共线程池。由于公共线程池中的线程平时都是挂起的,所以不会占用过多的CPU资源。
需要说明的是,本方案中的线程池具有计算能力,即服务器可以通过各个线程池确定对应的线程池是否还有空余处理能力。
本实施例中,在所提供的子线程池在没有空余处理能力的情况下,可以向公共线程池进行线程的租借,可以做到在流量洪峰来临之际自动弹性扩容,增加任务的处理能力。即便一个任务类型的任务发生问题也不会挤占其他线程池的资源、同时又能实现瞬时的流量增长不会要求手动去修改线程池的大小,做到自动灵活适配。
综上,本发明实施例中,获取目标任务;然后根据目标任务的目标任务类型,从预设的多个子线程池中确定与目标任务对应的目标线程池;再判断目标线程池是否存在空余处理能力;若目标线程池存在空余处理能力,则通过目标线程池处理目标任务;若目标线程池不存在空余处理能力,则通过预设的公共线程池处理目标任务。本方案中,当子线程池没有空余处理能力时,可以向公共线程池租借线程,以处理目标任务,无须为每个子线程池设置固定的最大处理性能,子线程池可以实现自动弹性扩容,提高了线程的利用率。
图7是本发明实施例提供的一种任务处理装置的示意性框图。如图7所示,对应于以上任务处理方法,本发明还提供一种任务处理装置。该任务处理装置包括用于执行上述任务处理方法的单元,该装置可以被配置于终端或服务器中。具体地,请参阅图7,该任务处理装置包括获取单元701、第一确定单元702、判断单元703、第一处理单元704以及第二处理单元705。
获取单元701,用于获取目标任务;
第一确定单元702,用于根据所述目标任务的目标任务类型,从预设的多个子线程池中确定与所述目标任务对应的目标线程池;
判断单元703,用于判断所述目标线程池是否存在空余处理能力;
第一处理单元704,用于当所述目标线程池存在所述空余处理能力时,通过所述目标线程池处理所述目标任务;
第二处理单元705,用于当所述目标线程池不存在所述空余处理能力时,通过预设的公共线程池处理所述目标任务。
在一些实施例中,所述第二处理单元705具体用于:
判断所述公共线程池中目标线程的比例是否小于预设阈值,所述目标线程为所述公共线程池中正在处理所述目标任务类型的任务的线程;
若所述公共线程池中目标线程的比例小于所述预设阈值,则通过所述公共线程池处理所述目标任务。
在一些实施例中,所述第二处理单元705又具体用于:
判断所述公共线程池中的工作线程数是否小于公共核心线程数;
若所述公共线程池中的工作线程数小于所述公共核心线程数,则调用所述公共线程池中的公共核心线程处理所述目标任务;
若所述公共线程池中的工作线程数大于或等于所述公共核心线程数,则根据所述公共线程池内公共阻塞队列中的排队任务数处理所述目标任务。
在一些实施例中,所述第二处理单元705进一步具体用于:
判断所述公共阻塞队列中的排队任务数是否小于预设的公共阻塞任务阈值;
若所述公共阻塞队列中的排队任务数小于所述公共阻塞任务阈值,则将所述目标任务加入所述公共阻塞队列中,以等待所述公共核心线程处理所述目标任务;
若所述公共阻塞队列中的排队任务数等于所述公共阻塞任务阈值,则判断所述公共线程池中的工作线程数是否小于预设的最大公共线程数;
若所述公共线程池中的工作线程数小于所述最大公共线程数,则创建公共线程以处理所述目标任务。
在一些实施例中,所述判断单元703具体用于:
判断所述目标线程池中的工作线程数是否小于预设的最大目标线程数;
若所述目标线程池中的工作线程数小于所述最大目标线程数,则确定所述目标线程池存在所述空余处理能力;
若所述目标线程池中的工作线程数大于或等于所述最大目标线程数,则确定所述目标线程池不存在所述空余处理能力。
在一些实施例中,第一处理单元704具体用于:
判断所述目标线程池中的工作线程数是否小于目标核心线程数;
若所述目标线程池中的工作线程数小于所述目标核心线程数,则调用所述目标线程池中的目标核心线程处理所述目标任务;
若所述目标线程池中的工作线程数大于或等于所述目标核心线程数,则根据所述目标线程池内目标阻塞队列中的排队任务数处理所述目标任务。
在一些实施例中,第一处理单元704进一步具体用于:
判断所述目标阻塞队列中的排队任务数是否小于预设的目标阻塞任务阈值;
若所述目标阻塞队列中的排队任务数小于所述目标阻塞任务阈值,则将所述目标任务加入所述目标阻塞队列中,以等待所述目标核心线程处理所述目标任务;
若所述目标阻塞队列中的排队任务数等于所述目标阻塞任务阈值,则创建目标线程以处理所述目标任务。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述任务处理装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述任务处理装置可以实现为一种计算机程序的形式,该计算机程序可以在如图8所示的计算机设备上运行。
请参阅图8,图8是本发明实施例提供的一种计算机设备的示意性框图。该计算机设备800可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图8,该计算机设备800包括通过系统总线801连接的处理器802、存储器和网络接口805,其中,存储器可以包括非易失性存储介质803和内存储器804。
该非易失性存储介质803可存储操作系统8031和计算机程序8032。该计算机程序8032包括程序指令,该程序指令被执行时,可使得处理器802执行一种任务处理方法。
该处理器802用于提供计算和控制能力,以支撑整个计算机设备800的运行。
该内存储器804为非易失性存储介质803中的计算机程序8032的运行提供环境,该计算机程序8032被处理器802执行时,可使得处理器802执行一种任务处理方法。
该网络接口805用于与其它设备进行网络通信。本领域技术人员可以理解,图8中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备800的限定,具体的计算机设备800可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器802用于运行存储在存储器中的计算机程序8032,以实现如下步骤:
获取目标任务;
根据所述目标任务的目标任务类型,从预设的多个子线程池中确定与所述目标任务对应的目标线程池;
判断所述目标线程池是否存在空余处理能力;
若所述目标线程池存在所述空余处理能力,则通过所述目标线程池处理所述目标任务;
若所述目标线程池不存在所述空余处理能力,则通过预设的公共线程池处理所述目标任务。
在一些实施例中,处理器802在实现所述通过预设的公共线程池处理所述目标任务步骤时,具体实现如下步骤:
判断所述公共线程池中目标线程的比例是否小于预设阈值,所述目标线程为所述公共线程池中正在处理所述目标任务类型的任务的线程;
若所述公共线程池中目标线程的比例小于所述预设阈值,则通过所述公共线程池处理所述目标任务。
在一些实施例中,处理器802在实现所述通过预设的公共线程池处理所述目标任务步骤时,具体实现如下步骤:
判断所述公共线程池中的工作线程数是否小于公共核心线程数;
若所述公共线程池中的工作线程数小于所述公共核心线程数,则调用所述公共线程池中的公共核心线程处理所述目标任务;
若所述公共线程池中的工作线程数大于或等于所述公共核心线程数,则根据所述公共线程池内公共阻塞队列中的排队任务数处理所述目标任务。
在一些实施例中,处理器802在实现所述根据所述公共线程池内公共阻塞队列中的排队任务数处理所述目标任务步骤时,具体实现如下步骤:
判断所述公共阻塞队列中的排队任务数是否小于预设的公共阻塞任务阈值;
若所述公共阻塞队列中的排队任务数小于所述公共阻塞任务阈值,则将所述目标任务加入所述公共阻塞队列中,以等待所述公共核心线程处理所述目标任务;
若所述公共阻塞队列中的排队任务数等于所述公共阻塞任务阈值,则判断所述公共线程池中的工作线程数是否小于预设的最大公共线程数;
若所述公共线程池中的工作线程数小于所述最大公共线程数,则创建公共线程以处理所述目标任务。
在一些实施例中,处理器802在实现所述判断所述目标线程池是否存在空余处理能力步骤时,具体实现如下步骤:
判断所述目标线程池中的工作线程数是否小于预设的最大目标线程数;
若所述目标线程池中的工作线程数小于所述最大目标线程数,则确定所述目标线程池存在所述空余处理能力;
若所述目标线程池中的工作线程数大于或等于所述最大目标线程数,则确定所述目标线程池不存在所述空余处理能力。
在一些实施例中,处理器802在实现所述通过所述目标线程池处理所述目标任务步骤时,具体实现如下步骤:
判断所述目标线程池中的工作线程数是否小于目标核心线程数;
若所述目标线程池中的工作线程数小于所述目标核心线程数,则调用所述目标线程池中的目标核心线程处理所述目标任务;
若所述目标线程池中的工作线程数大于或等于所述目标核心线程数,则根据所述目标线程池内目标阻塞队列中的排队任务数处理所述目标任务。
在一些实施例中,处理器802在实现所述根据所述目标线程池内目标阻塞队列中的排队任务数处理所述目标任务步骤时,具体实现如下步骤:
判断所述目标阻塞队列中的排队任务数是否小于预设的目标阻塞任务阈值;
若所述目标阻塞队列中的排队任务数小于所述目标阻塞任务阈值,则将所述目标任务加入所述目标阻塞队列中,以等待所述目标核心线程处理所述目标任务;
若所述目标阻塞队列中的排队任务数等于所述目标阻塞任务阈值,则创建目标线程以处理所述目标任务。
应当理解,在本发明实施例中,处理器802可以是中央处理单元(CentralProcessing Unit,CPU),该处理器802还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中计算机程序包括程序指令。该程序指令被处理器执行时使处理器执行如下步骤:
获取目标任务;
根据所述目标任务的目标任务类型,从预设的多个子线程池中确定与所述目标任务对应的目标线程池;
判断所述目标线程池是否存在空余处理能力;
若所述目标线程池存在所述空余处理能力,则通过所述目标线程池处理所述目标任务;
若所述目标线程池不存在所述空余处理能力,则通过预设的公共线程池处理所述目标任务。
在一些实施例中,所述处理器在执行所述程序指令而实现所述通过预设的公共线程池处理所述目标任务步骤时,具体实现如下步骤:
判断所述公共线程池中目标线程的比例是否小于预设阈值,所述目标线程为所述公共线程池中正在处理所述目标任务类型的任务的线程;
若所述公共线程池中目标线程的比例小于所述预设阈值,则通过所述公共线程池处理所述目标任务。
在一些实施例中,所述处理器在执行所述程序指令而实现所述通过预设的公共线程池处理所述目标任务步骤时,具体实现如下步骤:
判断所述公共线程池中的工作线程数是否小于公共核心线程数;
若所述公共线程池中的工作线程数小于所述公共核心线程数,则调用所述公共线程池中的公共核心线程处理所述目标任务;
若所述公共线程池中的工作线程数大于或等于所述公共核心线程数,则根据所述公共线程池内公共阻塞队列中的排队任务数处理所述目标任务。
在一些实施例中,所述处理器在执行所述程序指令而实现所述根据所述公共线程池内公共阻塞队列中的排队任务数处理所述目标任务步骤时,具体实现如下步骤:
判断所述公共阻塞队列中的排队任务数是否小于预设的公共阻塞任务阈值;
若所述公共阻塞队列中的排队任务数小于所述公共阻塞任务阈值,则将所述目标任务加入所述公共阻塞队列中,以等待所述公共核心线程处理所述目标任务;
若所述公共阻塞队列中的排队任务数等于所述公共阻塞任务阈值,则判断所述公共线程池中的工作线程数是否小于预设的最大公共线程数;
若所述公共线程池中的工作线程数小于所述最大公共线程数,则创建公共线程以处理所述目标任务。
在一些实施例中,所述处理器在执行所述程序指令而实现所述判断所述目标线程池是否存在空余处理能力步骤时,具体实现如下步骤:
判断所述目标线程池中的工作线程数是否小于预设的最大目标线程数;
若所述目标线程池中的工作线程数小于所述最大目标线程数,则确定所述目标线程池存在所述空余处理能力;
若所述目标线程池中的工作线程数大于或等于所述最大目标线程数,则确定所述目标线程池不存在所述空余处理能力。
在一些实施例中,所述处理器在执行所述程序指令而实现所述通过所述目标线程池处理所述目标任务步骤时,具体实现如下步骤:
判断所述目标线程池中的工作线程数是否小于目标核心线程数;
若所述目标线程池中的工作线程数小于所述目标核心线程数,则调用所述目标线程池中的目标核心线程处理所述目标任务;
若所述目标线程池中的工作线程数大于或等于所述目标核心线程数,则根据所述目标线程池内目标阻塞队列中的排队任务数处理所述目标任务。
在一些实施例中,所述处理器在执行所述程序指令而实现所述根据所述目标线程池内目标阻塞队列中的排队任务数处理所述目标任务步骤时,具体实现如下步骤:
判断所述目标阻塞队列中的排队任务数是否小于预设的目标阻塞任务阈值;
若所述目标阻塞队列中的排队任务数小于所述目标阻塞任务阈值,则将所述目标任务加入所述目标阻塞队列中,以等待所述目标核心线程处理所述目标任务;
若所述目标阻塞队列中的排队任务数等于所述目标阻塞任务阈值,则创建目标线程以处理所述目标任务。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种任务处理方法,其特征在于,包括:
获取目标任务;
根据所述目标任务的目标任务类型,从预设的多个子线程池中确定与所述目标任务对应的目标线程池;
判断所述目标线程池是否存在空余处理能力;
若所述目标线程池存在所述空余处理能力,则通过所述目标线程池处理所述目标任务;
若所述目标线程池不存在所述空余处理能力,则通过预设的公共线程池处理所述目标任务。
2.根据权利要求1所述的方法,其特征在于,所述通过预设的公共线程池处理所述目标任务,包括:
判断所述公共线程池中目标线程的比例是否小于预设阈值,所述目标线程为所述公共线程池中正在处理所述目标任务类型的任务的线程;
若所述公共线程池中目标线程的比例小于所述预设阈值,则通过所述公共线程池处理所述目标任务。
3.根据权利要求1所述的方法,其特征在于,所述通过预设的公共线程池处理所述目标任务,包括:
判断所述公共线程池中的工作线程数是否小于公共核心线程数;
若所述公共线程池中的工作线程数小于所述公共核心线程数,则调用所述公共线程池中的公共核心线程处理所述目标任务;
若所述公共线程池中的工作线程数大于或等于所述公共核心线程数,则根据所述公共线程池内公共阻塞队列中的排队任务数处理所述目标任务。
4.根据权利要求3所述的方法,其特征在于,所述根据所述公共线程池内公共阻塞队列中的排队任务数处理所述目标任务,包括:
判断所述公共阻塞队列中的排队任务数是否小于预设的公共阻塞任务阈值;
若所述公共阻塞队列中的排队任务数小于所述公共阻塞任务阈值,则将所述目标任务加入所述公共阻塞队列中,以等待所述公共核心线程处理所述目标任务;
若所述公共阻塞队列中的排队任务数等于所述公共阻塞任务阈值,则判断所述公共线程池中的工作线程数是否小于预设的最大公共线程数;
若所述公共线程池中的工作线程数小于所述最大公共线程数,则创建公共线程以处理所述目标任务。
5.根据权利要求1所述的方法,其特征在于,所述判断所述目标线程池是否存在空余处理能力,包括:
判断所述目标线程池中的工作线程数是否小于预设的最大目标线程数;
若所述目标线程池中的工作线程数小于所述最大目标线程数,则确定所述目标线程池存在所述空余处理能力;
若所述目标线程池中的工作线程数大于或等于所述最大目标线程数,则确定所述目标线程池不存在所述空余处理能力。
6.根据权利要求1至4中任一项所述的方法,其特征在于,所述通过所述目标线程池处理所述目标任务,包括:
判断所述目标线程池中的工作线程数是否小于目标核心线程数;
若所述目标线程池中的工作线程数小于所述目标核心线程数,则调用所述目标线程池中的目标核心线程处理所述目标任务;
若所述目标线程池中的工作线程数大于或等于所述目标核心线程数,则根据所述目标线程池内目标阻塞队列中的排队任务数处理所述目标任务。
7.根据权利要求6所述的方法,其特征在于,所述根据所述目标线程池内目标阻塞队列中的排队任务数处理所述目标任务,包括:
判断所述目标阻塞队列中的排队任务数是否小于预设的目标阻塞任务阈值;
若所述目标阻塞队列中的排队任务数小于所述目标阻塞任务阈值,则将所述目标任务加入所述目标阻塞队列中,以等待所述目标核心线程处理所述目标任务;
若所述目标阻塞队列中的排队任务数等于所述目标阻塞任务阈值,则创建目标线程以处理所述目标任务。
8.一种任务处理装置,其特征在于,包括:
获取单元,用于获取目标任务;
第一确定单元,用于根据所述目标任务的目标任务类型,从预设的多个子线程池中确定与所述目标任务对应的目标线程池;
判断单元,用于判断所述目标线程池是否存在空余处理能力;
第一处理单元,用于当所述目标线程池存在所述空余处理能力时,通过所述目标线程池处理所述目标任务;
第二处理单元,用于当所述目标线程池不存在所述空余处理能力时,通过预设的公共线程池处理所述目标任务。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现如权利要求1-7中任一项所述的方法。
CN202110724730.6A 2021-06-29 2021-06-29 任务处理方法、装置、计算机设备及存储介质 Pending CN113391910A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110724730.6A CN113391910A (zh) 2021-06-29 2021-06-29 任务处理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110724730.6A CN113391910A (zh) 2021-06-29 2021-06-29 任务处理方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN113391910A true CN113391910A (zh) 2021-09-14

Family

ID=77624245

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110724730.6A Pending CN113391910A (zh) 2021-06-29 2021-06-29 任务处理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN113391910A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115185677A (zh) * 2022-06-24 2022-10-14 湖南长银五八消费金融股份有限公司 业务数据合并总账方法、装置、计算机设备及介质
CN115348321A (zh) * 2022-08-12 2022-11-15 中国建设银行股份有限公司 一种基于流量控制的数据获取方法及相关装置
WO2024031931A1 (zh) * 2022-08-11 2024-02-15 苏州元脑智能科技有限公司 批量请求下发的优先排队处理方法、装置、服务器及介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115185677A (zh) * 2022-06-24 2022-10-14 湖南长银五八消费金融股份有限公司 业务数据合并总账方法、装置、计算机设备及介质
WO2024031931A1 (zh) * 2022-08-11 2024-02-15 苏州元脑智能科技有限公司 批量请求下发的优先排队处理方法、装置、服务器及介质
CN115348321A (zh) * 2022-08-12 2022-11-15 中国建设银行股份有限公司 一种基于流量控制的数据获取方法及相关装置
CN115348321B (zh) * 2022-08-12 2024-04-26 中国建设银行股份有限公司 一种基于流量控制的数据获取方法及相关装置

Similar Documents

Publication Publication Date Title
CN113391910A (zh) 任务处理方法、装置、计算机设备及存储介质
US9727372B2 (en) Scheduling computer jobs for execution
US8996811B2 (en) Scheduler, multi-core processor system, and scheduling method
US8612986B2 (en) Computer program product for scheduling ready threads in a multiprocessor computer based on an interrupt mask flag value associated with a thread and a current processor priority register value
US8056083B2 (en) Dividing a computer job into micro-jobs for execution
WO2015101091A1 (zh) 一种分布式资源调度方法及装置
EP2602714A1 (en) Apparatus and method for dynamically controlling preemption section in operating system
US20120284720A1 (en) Hardware assisted scheduling in computer system
WO2016202154A1 (zh) 一种gpu资源的分配方法及系统
US6295602B1 (en) Event-driven serialization of access to shared resources
CN112860387A (zh) 分布式任务调度方法、装置、计算机设备及存储介质
US9128754B2 (en) Resource starvation management in a computer system
EP1693743A2 (en) System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock
US9229716B2 (en) Time-based task priority boost management using boost register values
CN107423114B (zh) 一种基于服务分类的虚拟机动态迁移方法
CN113626173A (zh) 调度方法、装置及存储介质
JP2007172611A (ja) 方法、記憶媒体(仮想共有環境におけるプロセッサの有効利用法)
CN108804152B (zh) 配置参数的调节方法及装置
CN113821174B (zh) 存储处理方法、装置、网卡设备及存储介质
EP2413240A1 (en) Computer micro-jobs
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
US20040103414A1 (en) Method and apparatus for interprocess communications
CN112579299B (zh) 资源调度方法、电子设备及存储介质
CN115756826A (zh) 一种数据处理方法、装置及存储介质
CN115145728A (zh) 指令处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination