CN113220429B - Java线程池的任务处理方法、装置、设备和介质 - Google Patents

Java线程池的任务处理方法、装置、设备和介质 Download PDF

Info

Publication number
CN113220429B
CN113220429B CN202110455550.2A CN202110455550A CN113220429B CN 113220429 B CN113220429 B CN 113220429B CN 202110455550 A CN202110455550 A CN 202110455550A CN 113220429 B CN113220429 B CN 113220429B
Authority
CN
China
Prior art keywords
task
target
thread pool
thread
time
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.)
Active
Application number
CN202110455550.2A
Other languages
English (en)
Other versions
CN113220429A (zh
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.)
Wuhan United Imaging Healthcare Co Ltd
Original Assignee
Wuhan United Imaging Healthcare 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 Wuhan United Imaging Healthcare Co Ltd filed Critical Wuhan United Imaging Healthcare Co Ltd
Priority to CN202110455550.2A priority Critical patent/CN113220429B/zh
Publication of CN113220429A publication Critical patent/CN113220429A/zh
Application granted granted Critical
Publication of CN113220429B publication Critical patent/CN113220429B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及一种Java线程池的任务处理方法、装置、计算机设备和存储介质。所述方法包括:在接收到目标任务的情况下,判断线程池是否满负荷;目标任务为预设的任务集中的任务;若线程池满负荷,根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和任务集对应的最小任务耗时,确定执行目标任务所需的等待时间;其中,最小任务耗时为任务集对应的各任务的任务耗时中的最小值;在等待时间到达时,控制主线程添加目标任务到线程池中。采用本方法能够避免因主线程执行任务阻塞时间过长,线程池线程处于空闲状态而造成的资源浪费。

Description

Java线程池的任务处理方法、装置、设备和介质
技术领域
本申请涉及数据处理技术领域,特别是涉及一种Java线程池的任务处理方法、装置、计算机设备和存储介质。
背景技术
在Java中创建和销毁线程会消耗大量的时间和资源,因此,在处理多任务的情况下会选择使用线程池技术,将创建的线程缓存下来,有新的任务到来时候直接执行而无需再新创建线程。通常,当新的任务添加至线程池时,若线程池中无空闲工作线程且缓冲队列已满的情况下,将判断线程池中的线程数是否达到最大线程数,如果没有达到最大线程数,则新启动线程来执行任务,如果已经达到最大线程数,则通过相应的拒绝策略来处理这些任务。
传统技术中,常用的拒绝策略为调用者运行策略,在使用这种拒绝策略的情况下,当线程池达到最大线程数且缓冲队列已满的情况下,则由主线程来执行任务,这样再有新任务来的时候,即使其他线程已经空闲了,但是由于主线程正在执行任务,处于忙碌状态,无法分配新任务到当前线程池。
因此,传统的Java线程池拒绝策略的执行方法,存在资源浪费的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够降低Java线程池拒绝策略执行中资源浪费的Java线程池的任务处理方法、装置、计算机设备和存储介质。
一种Java线程池的任务处理方法,所述方法包括:
在接收到目标任务的情况下,判断线程池是否满负荷;所述目标任务为预设的任务集中的任务;
若所述线程池满负荷,根据所述线程池对应的缓冲队列数的目标值、所述线程池对应的目标线程数和所述任务集对应的最小任务耗时,确定执行所述目标任务所需的等待时间;其中,所述最小任务耗时为所述任务集对应的各任务的任务耗时中的最小值;
在所述等待时间到达时,控制主线程添加所述目标任务到线程池中。
在其中一个实施例中,所述根据所述线程池对应的缓冲队列数的目标值、所述线程池对应的目标线程数和所述任务集对应的最小任务耗时,确定执行所述目标任务所需的等待时间,包括:
根据所述线程池对应的缓冲队列数的目标值、所述线程池对应的目标线程数和所述最小任务耗时,确定出第一目标时间;所述第一目标时间为执行完所述线程池对应的缓冲队列所需的时间;
根据第一目标时间和所述最小任务耗时,确定执行所述目标任务所需的等待时间。
在其中一个实施例中,所述目标任务所需的等待时间与第二目标时间线性相关;其中,所述第二目标时间为所述第一目标时间与所述最小任务耗时之和。
在其中一个实施例中,所述第一目标时间与所述线程池对应的缓冲队列数的目标值、所述线程池对应的目标线程数、所述最小任务耗时均线性相关。
在其中一个实施例中,所述判断线程池是否满负荷,包括:
若所述线程池中当前执行任务的线程数达到所述目标线程数,且所述线程池的缓冲队列数达到所述目标值,则确定所述线程池满负荷。
在其中一个实施例中,所述线程池对应的缓冲队列数的目标值为根据所述线程池对应的预设缓冲队列数与预设阈值所确定的。
在其中一个实施例中,所述预设阈值与所述线程池对应的预设缓冲队列数线性相关。
一种Java线程池的任务处理装置,所述装置包括:
判断模块,用于在接收到目标任务的情况下,判断线程池是否满负荷;所述目标任务为预设的任务集中的任务;
确定模块,用于若所述线程池满负荷,根据所述线程池对应的缓冲队列数的目标值、所述线程池对应的目标线程数和所述任务集对应的最小任务耗时,确定执行所述目标任务所需的等待时间;其中,所述最小任务耗时为根据所述任务集对应的各任务的任务耗时所确定的;
控制模块,用于在所述等待时间到达时,控制主线程添加所述目标任务到线程池中。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
在接收到目标任务的情况下,判断线程池是否满负荷;所述目标任务为预设的任务集中的任务;
若所述线程池满负荷,根据所述线程池对应的缓冲队列数的目标值、所述线程池对应的目标线程数和所述任务集对应的最小任务耗时,确定执行所述目标任务所需的等待时间;其中,所述最小任务耗时为所述任务集对应的各任务的任务耗时中的最小值;
在所述等待时间到达时,控制主线程添加所述目标任务到线程池中。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
在接收到目标任务的情况下,判断线程池是否满负荷;所述目标任务为预设的任务集中的任务;
若所述线程池满负荷,根据所述线程池对应的缓冲队列数的目标值、所述线程池对应的目标线程数和所述任务集对应的最小任务耗时,确定执行所述目标任务所需的等待时间;其中,所述最小任务耗时为所述任务集对应的各任务的任务耗时中的最小值;
在所述等待时间到达时,控制主线程添加所述目标任务到线程池中。
上述Java线程池的任务处理方法、装置、计算机设备和存储介质,在接收到预设的任务集中的目标任务的情况下,通过对线程池是否满负荷进行判断,如果线程池满负荷,则根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和上述任务集对应的最小任务耗时,确定执行该目标任务所需的等待时间,在该等待时间到达时,控制主线程添加目标任务到线程池中,通过控制主线程将目标任务添加到线程池中避免了因主线程执行任务阻塞时间过长,线程池线程处于空闲状态而造成的资源浪费;另外,通过确定执行目标任务所需的等待时间,既能保证主线程只负责分配任务而不是去执行任务,又能充分利用线程池资源保证线程池吞吐量。
附图说明
图1为一个实施例中计算机设备的示意图;
图2为一个实施例中Java线程池的任务处理方法的流程示意图;
图3为另一个实施例中Java线程池的任务处理方法的流程示意图;
图4为一个实施例中Java线程池的任务处理装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
Java中创建和销毁线程会消耗大量的时间和资源,所以在多任务处理时会选择使用线程池技术,将创建的线程缓存下来,有新任务到来时调用该线程直接执行新任务,而无需再新创建线程。通常,一个新任务添加至线程池时,若线程池中有空闲的工作线程,则由该工作线程来运行该任务;在无空闲的工作线程的情况下,任务将被保存至缓冲队列,等待工作线程当前任务运行完毕;在无空闲工作线程且缓冲队列已满的情况下,判断线程池中的线程数是否达到最大线程数,如果没有达到最大线程数则新启动线程来执行任务,如果已经达到最大线程数则通过相应的拒绝策略来处理这些任务,目前常见的拒绝策略中的调用者运行策略当线程池达到最大线程数且缓冲队列已满的情况下,则由主线程来执行任务,这样再有新任务来的时候即使其他线程已经空闲了,但是由于主线程正在执行任务处于忙碌状态,无法分配新任务到当前线程池,导致资源的浪费影响任务处理的吞吐量。为此,本申请针对拒绝策略中的调用者运行策略存在资源浪费的问题,提出了一种Java线程池的任务处理方法、装置、计算机设备和存储介质。
本申请实施例提供的Java线程池的任务处理方法,可以适用于如图1所示的计算机设备。该计算机设备包括通过系统总线连接的处理器、存储器,该存储器中存储有计算机程序,处理器执行该计算机程序时可以执行下述方法实施例的步骤。可选的,该计算机设备还可以包括网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器,该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。可选的,该计算机设备可以是服务器,可以是个人计算机,还可以是个人数字助理,还可以是其他的终端设备,例如平板电脑、手机等等,还可以是云端或者远程服务器,本申请实施例对计算机设备的具体形式并不做限定。
在一个实施例中,如图2所示,提供了一种Java线程池的任务处理方法,以该方法应用于图1中的计算机设备为例进行说明,包括以下步骤:
S201,在接收到目标任务的情况下,判断线程池是否满负荷;目标任务为预设的任务集中的任务。
其中,预设的任务集中包括多个任务,在执行这多个任务时通过线程池为这多个任务分配线程从而实现任务的执行。具体地,在接收到预设的任务集中的目标任务的情况下,计算机设备判断Java线程池是否满负荷,根据Java线程池是否满负荷为目标任务分配线程,从而执行该目标任务。示例性地,以预设的任务集中包括30个任务为例,该目标任务可以为该任务集中的第25个任务,也可以为该任务集中的第12个任务,本实施例在此不做限制。需要说明的是,本实施例中的线程池满负荷是指该线程池中当前执行任务的线程数达到了最大线程数并且该线程池的缓冲队列已满的情况。
S204,若线程池满负荷,根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和任务集对应的最小任务耗时,确定执行目标任务所需的等待时间;其中,最小任务耗时为任务集对应的各任务的任务耗时中的最小值。
具体地,若计算机设备判断得到此时的线程池为满负荷状态,则计算机设备根据该线程池对应的缓冲队列数的目标值、该线程池对应的目标线程数和上述任务集对应的最小任务耗时,确定执行该目标任务所需的等待时间,其中,上述任务集对应的最小任务耗时为该任务集中各任务的任务耗时中的最小值,例如,该任务集中有15个任务,则计算机设备将这15个任务中耗时最小的时间值确定为该任务集对应的最小任务耗时。可选的,本实施例中线程池对应的缓冲队列数的目标值可以为该线程池对应的缓冲队列数的最大值,线程池对应的目标线程数可以为该线程池对应的最大线程数。可选的,若计算机设备判断得到该线程池未满负荷,则计算机设备可以控制主线程将该目标任务添加到线程池中。
S203,在等待时间到达时,控制主线程添加目标任务到线程池中。
具体地,计算机设备在上述确定的目标任务所需的等待时间到达时,控制主线程添加该目标任务到线程池中。可选的,上述主线程只是用于控制线程池中的线程并且独立于该线程池的线程。需要说明的是,上述等待时间是线程池消费完现有任务的最小时间,所以在上述等待时间到达的这段时间内,线程池仍处于满负荷状态,仍在执行任务。
上述Java线程池的任务处理方法中,计算机设备在接收到预设的任务集中的目标任务的情况下,通过对线程池是否满负荷进行判断,如果线程池满负荷,则根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和上述任务集对应的最小任务耗时,确定执行该目标任务所需的等待时间,在该等待时间到达时,控制主线程添加目标任务到线程池中,通过控制主线程将目标任务添加到线程池中避免了因主线程执行任务阻塞时间过长,线程池线程处于空闲状态而造成的资源浪费;另外,通过确定执行目标任务所需的等待时间,既能保证主线程只负责分配任务而不是去执行任务,又能充分利用线程池资源保证线程池吞吐量。
在上述根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和预设的任务集对应的最小任务耗时,确定执行目标任务所需的等待时间的场景中,在一个实施例中,如图3所示,上述S202,包括:
S301,根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和最小任务耗时,确定出第一目标时间;第一目标时间为执行完线程池对应的缓冲队列所需的时间。
具体地,计算机设备根据上述线程池对应的缓冲队列数的目标值、上述线程池对应的目标线程数和上述任务集对应的最小任务耗时,确定出执行完线程池对应的缓冲队列所需的第一目标时间。可选的,上述第一目标时间与上述线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和上述任务集对应的最小任务耗时均线性相关。示例性地,计算机设备可以根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和上述最小任务耗时以及公式
Figure BDA0003040381450000071
确定出执行完线程池对应的缓冲队列所需的时间,式中,t表示第一目标时间,maxQueue表示线程池对应的缓冲队列数的目标值,maxPoolsize表示线程池对应的目标线程数,minTasktime为上述最小任务耗时。可选的,计算机设备也可以将线程池对应的缓冲队列数的目标值和预设的比例因子相乘从而确定出第一目标时间,即可根据公式
Figure BDA0003040381450000072
确定出第一目标时间,式中,factor表示预设的比例因子。
S302,根据第一目标时间和最小任务耗时,确定执行目标任务所需的等待时间。
具体地,计算机设备根据上述确定出的第一目标时间和上述最小任务耗时,确定执行上述目标任务所需的等待时间。可选的,计算机设备可以将上述第一目标时间和上述最小任务耗时之和确定为执行上述目标任务所需的等待时间。需要说明的是,将上述第一目标时间和上述最小任务耗时之和确定为执行目标任务所需的等待时间的含义为在执行完线程池中所有任务都是耗时最小的这种极端情况下,执行完线程池对应的缓冲队列所需的时间和正在执行的任务所需的时间都为最小耗时,从而保证目标任务在等待的这段时间内线程池是处于满负荷状态而不会出现空闲的情况。
本实施例中,计算机设备根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和预设任务集对应的最小任务耗时,能够确定出执行完线程池对应的缓冲队列所需的第一目标时间,进而可以根据确定的第一目标时间和任务集对应的最小任务耗时,确定出执行目标任务所需的等待时间,由于确定的执行完线程池对应的缓冲队列所需的第一目标时间是根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和任务集对应的最小任务耗时确定的,而目标任务所需的等待时间是根据该第一目标时间和任务集对应的最小任务耗时确定的,保证了目标任务在等待的这段时间内线程池是处于满负荷状态不会出现空闲的情况,避免了线程池线程处于空闲状态而造成的资源浪费。
在上述根据第一目标时间和任务集对应的最小任务耗时,确定执行目标任务所需的等待时间的场景中,在一个实施例中,上述目标任务所需的等待时间与第二目标时间线性相关;其中,第二目标时间为第一目标时间与任务集对应的最小任务耗时之和。
具体地,计算机设备可以根据上述确定的第一目标时间和任务集对应的最小任务耗时之和确定出第二目标时间,根据第二目标时间确定出上述目标任务所需的等待时间,其中,目标任务所需的等待时间与该第二目标时间线性相关。可选的,计算机设备可以将第二目标时间确定为上述目标任务所需的等待时间,也可以将第二目标时间和参数相乘的乘积确定为目标任务所需的等待时间。
本实施例中,计算机设备将执行完线程池对应的缓冲队列所需的第一目标时间和任务集对应的最小任务耗时之和确定为第二目标时间,进而可以根据目标任务所需的等待时间与该第二目标时间间的线性相关的关系确定出目标任务所需的等待时间,由于确定的目标任务所需的等待时间是与执行完线程池对应的缓冲队列所需的第一目标时间和任务集对应的最小任务耗时之和线性相关的,保证了目标任务在等待的这段时间内线程池是处于满负荷状态不会出现空闲的情况,避免了线程池线程处于空闲状态而造成的资源浪费。
在上述接收到目标任务的情况下,判断线程池是否满负荷的场景中,在一个实施例中,上述S201,包括:若线程池中当前执行任务的线程数达到目标线程数,且线程池的缓冲队列数达到目标值,则确定线程池满负荷。
具体地,线程池满负荷是指线程池中当前执行任务的线程数达到该线程池对应的目标线程数,且该线程池的缓冲队列数达到线程池对应的缓冲队列数的目标值。可选的,作为一种实现方式,线程池满负荷是指线程池达到最大线程数并且线程池缓冲队列已满,这里需要说明的是线程池缓冲队列已满并不代表当前缓冲队列大小workQueue.size()达到最大值maxQueue,而是通过当前缓冲队列大小workQueue.size()是否超过缓冲队列最大值maxQueue乘以线程池缓冲队列阀值factor来确认缓冲队列已满,即若workQueue.size()>maxQueue*factor则表示线程池队列已满。可选的,计算机设备可以根据计算公式:activeCount==maxPoolSize&&workQueue.size()>maxQueue*factor)判断线程池是否满负荷,式中,activeCount表示线程池正在执行任务的线程数,maxPoolSize表示线程池最大线程数,workQueue.size()表示当前缓冲队列大小,maxQueue表示线程池缓冲队列workQueue的最大值,这里需要说明的是,线程池缓冲队列的阀值在多线程环境下队列变化较快,所以判断缓冲队列是否已满不能直接通过workQueue.size()==maxQueue进行判断,而应该对maxQueue加一个比例因子,例如,0.95等,比例因子的具体数值可以根据队列大小进行确定。
本实施例中,若线程池中当前执行任务的线程数达到目标线程数,且线程池缓冲队列数达到线程池对应的缓冲队列数的目标值,则计算机设备确定线程池满负荷,该确定过程十分简单,根据线程池中当前执行任务的线程数和线程池的缓冲队列数就能够进行确定,从而提高了确定线程池是否满负荷的效率。
在一个实施例中,上述线程池对应的缓冲队列数的目标值为根据线程池对应的预设缓冲队列数与阈值所确定的。
具体地,线程池缓冲队列的阀值在多线程环境下队列变化较快,因此,计算机设备可以根据线程池对应的预设缓冲队列数与预设阈值对线程池对应的缓冲队列数的目标值进行确定。可选的,线程池对应的缓冲队列数的目标值可以为该线程池对应的缓冲队列数的最大值。可选的,上述预设阈值与该线程池对应的预设缓冲队列数线性相关,也就是说,计算机设备可以根据线程池对应的预设缓冲队列数确定上述阈值,一般地,线程池对应的预设缓冲队列数越大,则上述阈值越大,线程池对应的预设缓冲队列数越小,则上述阈值越小。
本实施例中,线程池对应的缓冲队列数的目标值是根据线程池对应的预设缓冲队列数与预设阈值所确定的,这样能够确保确定的线程池对应的缓冲队列数的目标值的准确度。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种Java线程池的任务处理装置,包括:判断模块、确定模块和控制模块,其中:
判断模块,用于在接收到目标任务的情况下,判断线程池是否满负荷;目标任务为预设的任务集中的任务。
确定模块,用于若线程池满负荷,根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和任务集对应的最小任务耗时,确定执行目标任务所需的等待时间;其中,最小任务耗时为根据任务集对应的各任务的任务耗时所确定的。
控制模块,用于在等待时间到达时,控制主线程添加目标任务到线程池中。
本实施例提供的Java线程池的任务处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在上述实施例的基础上,可选的,上述确定模块,包括:第一确定单元和第二确定单元,其中:
第一确定单元,用于根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和最小任务耗时,确定出第一目标时间;第一目标时间为执行完线程池对应的缓冲队列所需的时间。
第二确定单元,用于根据第一目标时间和最小任务耗时,确定执行目标任务所需的等待时间。
本实施例提供的Java线程池的任务处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在上述实施例的基础上,可选的,目标任务所需的等待时间与第二目标时间线性相关;其中,第二目标时间为第一目标时间与最小任务耗时之和。
本实施例提供的Java线程池的任务处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在上述实施例的基础上,可选的,第一目标时间与线程池对应的缓冲队列数的目标值、线程池对应的目标线程数、最小任务耗时均线性相关。
本实施例提供的Java线程池的任务处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在上述实施例的基础上,可选的,上述判断模块,包括:判断单元,其中:
判断单元,用于若线程池中当前执行任务的线程数达到目标线程数,且线程池的缓冲队列数达到目标值,则确定线程池满负荷。
本实施例提供的Java线程池的任务处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在上述实施例的基础上,可选的,线程池对应的缓冲队列数的目标值为根据线程池对应的预设缓冲队列数与预设阈值所确定的。
本实施例提供的Java线程池的任务处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在上述实施例的基础上,可选的,预设阈值与线程池对应的预设缓冲队列数线性相关。
本实施例提供的Java线程池的任务处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
关于Java线程池的任务处理装置的具体限定可以参见上文中对于Java线程池的任务处理方法的限定,在此不再赘述。上述Java线程池的任务处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
在接收到目标任务的情况下,判断线程池是否满负荷;目标任务为预设的任务集中的任务;
若线程池满负荷,根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和任务集对应的最小任务耗时,确定执行目标任务所需的等待时间;其中,最小任务耗时为任务集对应的各任务的任务耗时中的最小值;
在等待时间到达时,控制主线程添加目标任务到线程池中。
上述实施例提供的计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
在接收到目标任务的情况下,判断线程池是否满负荷;目标任务为预设的任务集中的任务;
若线程池满负荷,根据线程池对应的缓冲队列数的目标值、线程池对应的目标线程数和任务集对应的最小任务耗时,确定执行目标任务所需的等待时间;其中,最小任务耗时为任务集对应的各任务的任务耗时中的最小值;
在等待时间到达时,控制主线程添加目标任务到线程池中。
上述实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种Java线程池的任务处理方法,其特征在于,所述方法包括:
在接收到目标任务的情况下,判断线程池是否满负荷;所述目标任务为预设的任务集中的任务;
若所述线程池满负荷,根据所述线程池对应的缓冲队列数的目标值、所述线程池对应的目标线程数和所述任务集对应的最小任务耗时,确定出第一目标时间,根据所述第一目标时间和所述最小任务耗时,确定执行所述目标任务所需的等待时间;其中,所述最小任务耗时为所述任务集对应的各任务的任务耗时中的最小值;所述第一目标时间为执行完所述线程池对应的缓冲队列所需的时间;
在所述等待时间到达时,控制主线程添加所述目标任务到线程池中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述线程池未满负荷,则控制所述主线程将所述目标任务添加到所述线程池中。
3.根据权利要求2所述的方法,其特征在于,所述目标任务所需的等待时间与第二目标时间线性相关;其中,所述第二目标时间为所述第一目标时间与所述最小任务耗时之和。
4.根据权利要求2所述的方法,其特征在于,所述第一目标时间与所述线程池对应的缓冲队列数的目标值、所述线程池对应的目标线程数、所述最小任务耗时均线性相关。
5.根据权利要求1所述的方法,其特征在于,所述判断线程池是否满负荷,包括:
若所述线程池中当前执行任务的线程数达到所述目标线程数,且所述线程池的缓冲队列数达到所述目标值,则确定所述线程池满负荷。
6.根据权利要求1所述的方法,其特征在于,所述线程池对应的缓冲队列数的目标值为根据所述线程池对应的预设缓冲队列数与预设阈值所确定的。
7.根据权利要求6所述的方法,其特征在于,所述预设阈值与所述线程池对应的预设缓冲队列数线性相关。
8.一种Java线程池的任务处理装置,其特征在于,所述装置包括:
判断模块,用于在接收到目标任务的情况下,判断线程池是否满负荷;所述目标任务为预设的任务集中的任务;
确定模块,用于若所述线程池满负荷,根据所述线程池对应的缓冲队列数的目标值、所述线程池对应的目标线程数和所述任务集对应的最小任务耗时,确定出第一目标时间,根据所述第一目标时间和所述最小任务耗时,确定执行所述目标任务所需的等待时间;其中,所述最小任务耗时为所述任务集对应的各任务的任务耗时中的最小值;所述第一目标时间为执行完所述线程池对应的缓冲队列所需的时间;
控制模块,用于在所述等待时间到达时,控制主线程添加所述目标任务到线程池中。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202110455550.2A 2021-04-26 2021-04-26 Java线程池的任务处理方法、装置、设备和介质 Active CN113220429B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110455550.2A CN113220429B (zh) 2021-04-26 2021-04-26 Java线程池的任务处理方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110455550.2A CN113220429B (zh) 2021-04-26 2021-04-26 Java线程池的任务处理方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN113220429A CN113220429A (zh) 2021-08-06
CN113220429B true CN113220429B (zh) 2022-05-20

Family

ID=77089175

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110455550.2A Active CN113220429B (zh) 2021-04-26 2021-04-26 Java线程池的任务处理方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN113220429B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115934372A (zh) * 2023-03-09 2023-04-07 浪潮电子信息产业股份有限公司 一种数据处理方法、系统、设备及计算机可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9535759B2 (en) * 2014-05-23 2017-01-03 Osr Open Systems Resources, Inc. Work queue thread balancing
CN104219288B (zh) * 2014-08-14 2018-03-23 中国南方电网有限责任公司超高压输电公司 基于多线程的分布式数据同步方法及其系统
GB2513779B (en) * 2014-08-14 2015-05-13 Imp Io Ltd A method and system for scalable job processing
CN111782293A (zh) * 2020-06-28 2020-10-16 珠海豹趣科技有限公司 一种任务处理方法、装置、电子设备及可读存储介质
CN112148493A (zh) * 2020-09-30 2020-12-29 武汉中科通达高新技术股份有限公司 一种流媒体任务管理方法及装置、数据服务器

Also Published As

Publication number Publication date
CN113220429A (zh) 2021-08-06

Similar Documents

Publication Publication Date Title
CN109582455B (zh) 多线程任务处理方法、装置及存储介质
US9448864B2 (en) Method and apparatus for processing message between processors
US9858115B2 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium
US8056083B2 (en) Dividing a computer job into micro-jobs for execution
CN110569123A (zh) 线程分配方法、装置、计算机设备和存储介质
US10289446B1 (en) Preserving web browser child processes by substituting a parent process with a stub process
CN108549574B (zh) 线程调度管理方法、装置、计算机设备和存储介质
CN111767134A (zh) 一种多任务动态资源调度方法
US10467054B2 (en) Resource management method and system, and computer storage medium
CN111104211A (zh) 基于任务依赖的计算卸载方法、系统、设备及介质
US10248321B1 (en) Simulating multiple lower importance levels by actively feeding processes to a low-memory manager
CN113220429B (zh) Java线程池的任务处理方法、装置、设备和介质
US9696787B2 (en) Dynamic control of processors to reduce thermal and power costs
CN115562838A (zh) 资源调度方法、装置、计算机设备及存储介质
CN114780463A (zh) 中断控制方法、设备、分布式系统及存储介质
CN111930516B (zh) 一种负载均衡方法及相关装置
CN113434303A (zh) 批处理的遥感影像智能处理模型预测性能优化系统及方法
CN111782378B (zh) 自适应性的处理性能调整方法、服务器及可读存储介质
WO2020088078A1 (zh) 一种基于fpga的数据处理方法、装置、设备及介质
CN113742059B (zh) 任务分配方法、装置、计算机设备和存储介质
US9618988B2 (en) Method and apparatus for managing a thermal budget of at least a part of a processing system
JP2012093832A (ja) 情報処理装置
CN114661415A (zh) 调度方法及计算机系统
CN107562527B (zh) 一种rtos上的smp的实时任务调度方法
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム

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
GR01 Patent grant
GR01 Patent grant