CN103744723A - 一种线程池的管理方法和管理系统 - Google Patents
一种线程池的管理方法和管理系统 Download PDFInfo
- Publication number
- CN103744723A CN103744723A CN201410036823.XA CN201410036823A CN103744723A CN 103744723 A CN103744723 A CN 103744723A CN 201410036823 A CN201410036823 A CN 201410036823A CN 103744723 A CN103744723 A CN 103744723A
- Authority
- CN
- China
- Prior art keywords
- thread
- worker
- worker thread
- pool
- running status
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种线程池的管理方法和管理系统,管理系统包括工作线程创建单元、检测线程创建单元、工作线程调用单元、心跳信号检测单元和假死线程处理单元,管理方法包括:创建工作线程,将工作线程送入线程池队列;创建检测线程;调用线程池队列中的工作线程执行任务;通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。通过线程池来管理其中的工作线程,不依赖于操作系统托管,能够及时准确地检测出假死的线程,进而找到假死线程执行任务的程序中出错的位置并通知用户。
Description
技术领域
本发明涉及线程池技术,更具体地说,涉及一种线程池的管理方法和管理系统。
背景技术
在基于面向对象编程的应用中,由于创建一个对象要获取内存资源或者其它更多中资源,因此创建和销毁对象要花费很多时间。以基于Java编程技术的应用为例,JVM(Java虚拟机)将试图跟踪每一个对象,以便能够在对象销毁后进行系统资源回收。
另外,除了创建和销毁线程的开销之外,活动的线程也需要耗费系统资源。如果短时间内产生大量线程,可能会导致系统由于过度消耗内存或者切换过度而资源不足。为了防止资源不足,服务器应用程序需要一些办法来限制任何给定时刻处理的请求数目,并尽可能减少创建和销毁线程的数量,特别是针对一些资源耗费比较大的线程的创建和销毁,因此“线程池”技术就应运而生。
线程池是一种多线程处理形式,目前.net平台和Java平台等都封装了由操作系统托管的线程池接口,如图1所示,在现有的线程池的管理技术中,多个任务被添加到任务队列110中,操作系统从线程池中提取空闲线程来处理任务,如果线程池中没有空闲的线程,操作系统将扩大线程池容量,创建临时的线程来处理任务,在工作线程处理完任务后,将被重置为空闲状态,重新回到线程队列中等待任务请求。
现有的线程池的管理技术存在以下缺陷:
只有当所有工作线程处理完任务退出之后才能够退出进程的主线程,否则会产生内存泄露或者直接无法退出,造成卡死现象;需要用户自行控制线程的生命周期;无法及时准确地检测出假死的线程,假死的线程需要用户自行进行判断;依赖于平台对线程池的创建以及工作线程的分配,在不同的平台下需要调用适应于该平台下的线程池接口才能实现线程调度。
发明内容
本发明针对现有的线程池的管理技术中,在不同的平台下需要调动适应于该平台下的线程池接口才能实现线程的调度的缺陷,无法及时准确地检测出假死的线程,假死的线程需要用户自行进行判断的缺陷,提供一种线程池的管理方法和管理系统,提供适应于各种平台的统一线程池接口,能够及时准确地判断出假死的线程,并通知用户相应的出错位置。
本发明解决其技术问题采样的技术方案是:提供一种线程池的管理方法,包括以下步骤:
S1、创建工作线程,将工作线程送入线程池队列;
S2、创建检测线程;
S3、调用所述线程池队列中的工作线程执行任务;
S4、通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;
S5、通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。
优选地,步骤S1包括以下子步骤:
S11、设置线程池的数据结构参数,所述数据结构参数包括最小工作线程数和已分配线程表;
S12、基于所述最小工作线程量创建工作线程,工作线程的属性包括活动状态和运行状态,并将工作线程的活动状态设置为挂起状态、运行状态设置为空闲状态;
S13、将工作线程送入线程池队列。
优选地,步骤S3包括以下子步骤:
S31、当有任务到达时,调用所述线程池队列中的工作线程,并将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务;
S32、将活动状态设置为激活状态、运行状态设置为工作状态的工作线程记入所述已分配线程表。
优选地,子步骤S31包括以下次级子步骤:
S311、当有任务到达时,判断所述线程池队列中是否存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程,若是则执行次级子步骤S312,若否执行次级子步骤S313;
S312、将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务,执行子步骤S32;
S313、创建临时的工作线程,并将临时的工作线程送入所述线程池队列,执行次级子步骤S312。
优选地,所述数据结构参数还包括最大工作线程数,在次级子步骤S313中,判断当前工作线程数是否大于或者等于所述最大工作线程数,若否则创建临时的工作线程,并将临时的工作线程送入所述线程池队列,执行次级子步骤S312。
优选地,步骤S5包括以下子步骤:
S51、检测线程将在所述心跳周期内未接收到心跳信号的工作线程的运行状态设置为假死状态,从所述已分配线程表中将处于假死状态的工作线程移除,并释放处于假死状态的工作线程的所有资源;
S52、通过用户接口通知用户出错位置。
提供一种线程池的管理系统,包括:
工作线程创建单元,用于创建工作线程,并将工作线程送入线程池队列;
检测线程创建单元,用于创建检测线程;
工作线程调用单元,用于调用所述线程池队列中的工作线程执行任务;
心跳信号检测单元,用于通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;
假死线程处理单元,用于通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。
优选地,所述工作线程创建单元包括:
线程池参数设置模块,用于设置线程池的数据结构参数,所述数据结构参数包括最小工作线程量和已分配线程表;
工作线程创建模块,用于基于所述最小工作线程量创建工作线程,工作线程的属性包括活动状态和运行状态,并将工作线程的活动状态设置为挂起状态、运行状态设置为空闲状态;
分配模块,用于将工作线程送入线程池队列。
优选地,所述工作线程调用单元包括:
工作线程调用模块,用于在任务到达时,调用所述线程池队列中的工作线程,并将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务;
记录模块,用于将活动状态设置为激活状态、运行状态设置为工作状态的工作线程记入所述已分配线程表。
优选地,所述工作线程调用模块包括:
判断子模块,用于在任务到达时,判断所述线程池队列中是否存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程;
工作线程状态设置子模块,用于将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务;
临时工作线程创建子模块,用于在所述线程池队列中不存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程时,创建临时的工作线程,并将临时的工作线程送入所述线程池队列。
本发明的线程池的管理方法和管理系统具有以下有益效果:通过线程池来管理其中的工作线程,不依赖于操作系统托管,因此,在各种平台下,只要调用本发明的线程池的统一接口,就可以实现线程的调用。更进一步,通过创建检测线程来检测执行任务的工作线程是否发生假死,使能够及时准确地检测出假死的线程,进而找到假死线程执行任务的程序中出错的位置并通知用户,使用户能够及时了解并进行相应的补救或者预警。
附图说明
图1为现有的线程池管理的流程示意图;
图2为本发明的线程池管理方法第一实施例的流程图;
图3为本发明的线程池管理方法第二实施例的流程图;
图4为本发明的线程池管理系统第一实施例的功能图;
图5为本发明的线程池管理系统第一实施例中线程池初始化的流程图;
图6为本发明的线程池管理系统第一实施例中工作线程调度的流程图;
图7为本发明的线程池管理系统第一实施例中检测线程检测假死线程的流程图;
图8为本发明的线程池管理系统第二实施例的功能图;
图9为本发明工作线程的属性的示意图;
图10为本发明的线程池的数据结构参数的示意图。
具体实施方式
以下结合附图和实施例对本发明做进一步的解释说明。
图2为本发明的线程池管理方法第一实施例的流程图,如图2所示,在本实施例中,线程池管理方法包括以下步骤:
S1、创建工作线程,将工作线程送入线程池队列;
S2、创建检测线程;
S3、调用线程池队列中的工作线程执行任务;
S4、通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;
S5、通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。
步骤S1-S2实质为线程池的初始化过程,在该过程中,将创建线程池的控制量及控制锁,设置线程池的数据结构参数,创建工作线程,并设置工作线程的属性。一般而言,线程池的数据结构参数包括线程属性、堆栈容量等(参见图9),工作线程的属性包括线程ID(由系统分配)、线程占堆栈的容量以及线程的优先级等(参见图10)。
在本实施例中,步骤S1包括以下子步骤:S11、设置线程池的数据结构参数,数据结构参数包括最小工作线程数和已分配线程表;S12、基于最小工作线程量创建工作线程,工作线程的属性包括活动状态和运行状态,并将工作线程的活动状态设置为挂起状态、运行状态设置为空闲状态;S13、将工作线程送入线程池队列。
具体的,除了线程池必须的传统参数(例如,线程属性、堆栈容量的等)外,在本实施例中,线程池的数据结构参数还包括最小工作线程数和已分配线程表,最小工作线程数可以根据实际情况由用户设定,已分配线程表用于记录分配了任务的工作线程。然后,根据用户设定的工作线程数量的最小值来创建工作线程,并设置工作线程的属性。除了工作线程必须的传统属性(例如,线程ID、堆栈容量、优先级等)外,在本实施例中,工作线程的属性还包括活动状态和运行状态,活动状态用于标识该工作线程处于非激活状态(即挂起状态)还是激活状态,运行状态用于标识该工作线程处于工作状态还是非工作状态(例如空闲状态以及假死状态)。在线程池设置工作线程的属性时,线程池将工作线程的活动状态设置为挂起状态、运行状态设置为空闲状态。完成了上述工作后,将工作线程送入线程池队列中,等待任务到达。
在将工作线程送入线程池队列中后,执行步骤S2,在步骤S2中创建检测线程。检测线程将用于保持与激活的各工作线程的心跳信号(类似于网络通信中与服务端的连接信号)。
在本实施例中,步骤S3包括以下子步骤:S31、当有任务到达时,调用线程池队列中的工作线程,并将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务;S32、将活动状态设置为激活状态、运行状态设置为工作状态的工作线程记入已分配线程表。
具体的,当有任务到达时,首先当前判断线程池队列中是否存在空闲的工作线程,空闲的工作线程的活动状态设置为挂起状态、运行状态设置为空闲状态(次级子步骤S311)。若存在空闲的工作线程,则获取空闲的工作线程,将空闲的工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使该工作线程执行任务(次级子S312),然后将该工作线程记入已分配线程表(子步骤S32)。若当前不存在空闲的工作线程,则创建临时的工作线程,将临时的工作线程送入线程池队列(次级子步骤S313),然后将临时的工作线程的活动状态设置为激活状态,运行状态设置为工作状态,使用临时的工作线程执行任务(次级子步骤S312)。
在本发明的其他实施例中,线程池的数据结构参数还可以包括最大工作线程数,最大工作线程数可以根据实际情况由用户设定。此时,在步骤S3中,当有任务到达时,首先当前判断线程池队列中是否存在空闲的工作线程,若存在空闲的工作线程,则获取空闲的工作线程,将空闲的工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使该工作线程执行任务,然后将该工作线程记入已分配线程表。若当前不存在空闲的工作线程,首先判断当前的工作线程数是否大于或者等于最大工作线程数,若是则等待工作线程执行完任务后进入空闲状态,若否则创建临时的工作线程,并将临时的工作线程送入线程池队列,使用临时的工作线程执行任务。
在本实施例的步骤S4中,检测线程保持与各处于激活状态的工作线程的心跳信号,通过这种方式来检测在心跳周期内是否接收到各工作线程的心跳信号。其中,心跳周期等于各工作线程的最大心跳信号乘以一系数,该系数由系统决定。
在本实施例的步骤S5包括以下子步骤:S51、检测线程将在心跳周期内未接收到心跳信号的工作线程的运行状态设置为假死状态,从已分配线程表中将处于假死状态的工作线程移除,并释放处于假死状态的工作线程的所有资源;S52、通过用户接口通知用户出错位置。
具体的,若检测线程在心跳周期内为接收到处于激活状态的某一工作线程的心跳信号时,将该工作线程的运行状态设置为假死状态,并将处于假死状态的工作线程从已分配线程表中移除,并释放处于假死状态的工作线程的所有资源,调用用户接口通知用户具体出错的位置。所谓出错的位置指的是假死工作线程执行的任务的程序中出错的位置,例如是函数,或者是接口等等。执行完任务的工作线程将回到空闲状态,再次放入线程池队列中等待新的任务。但是假死的工作线程则不会回到队列中,将由系统进行回收。
在现有的线程池的管理技术中,由于依赖于操作系统托管,在不同的平台下,线程池接口是不同的,例如具不同的函数等,在一个平台下适用的线程池接口,在另一个平台下则不适用,需要重新设置及定义。不与不同,在本发明的线程池的管理方法的第一实施例中,通过线程池来管理其中的工作线程(包括工作线程的创建及其属性的设置),不依赖于操作系统托管,因此,在各种平台下,只要调用本发明的线程池的统一接口,就可以实现线程的调用。更进一步,通过创建检测线程来检测执行任务的工作线程是否发生假死,能够及时准确地检测出假死的线程,进而找到假死线程执行任务的程序中出错的位置并通知用户,使用户能够及时了解并进行相应的补救或者预警。
图3为本发明的线程池的管理方法第二实施例的流程图,如图3所示,在本实施例中,线程池的管理方法包括以下步骤:
S1、创建工作线程,将工作线程送入线程池队列;
S2、创建检测线程;
S3、调用线程池队列中的工作线程执行任务;
S4、通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;
S5、通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置;
S6、当主线程退出时,释放所有工作线程的资源。
本实施例与本发明的线程池的管理方法第一实施例的区别在于,进程的主线程无需等待所有的工作线程执行完任务后退出后才退出,在主线程退出时,将释放所有工作线程的资源。如此,无论主线程何时退出,都不会产生内存泄露或者因无法退出而造成卡死的现象,灵活度高。
图4为本发明的线程池的管理系统400第一实施例的功能框图,如图4所示,在本实施例中,线程池的管理系统400包括:
工作线程创建单元410,用于创建工作线程,并将工作线程送入线程池队列;
检测线程创建单元420,用于创建检测线程;
工作线程调用单元430,用于调用所述线程池队列中的工作线程执行任务;
心跳信号检测单元440,用于通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;
假死线程处理单元450,用于通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。
在本实施例中,工作线程创建单元410包括:
线程池参数设置模块411,用于设置线程池的数据结构参数,数据结构参数包括最小工作线程量和已分配线程表;
工作线程创建模块412,用于基于最小工作线程量创建工作线程,工作线程的属性包括活动状态和运行状态,并将工作线程的活动状态设置为挂起状态、运行状态设置为空闲状态;
分配模块413,用于将工作线程送入线程池队列。
在本实施例中,工作线程创建单元410和检测线程创建单元420用于完成线程池的初始化,工作流程如图5所示,线程池参数设置模块411设置线程池的数据结构参数,工作线程创建模块412判断当前线程池中的线程数是否大于或者等于用户指定的最小线程数,若否则基于最小工作线程量创建工作线程,工作线程的属性包括活动状态和运行状态,并将工作线程的活动状态设置为挂起状态、运行状态设置为空闲状态,然后通过分配模块413将工作线程送入线程池队列。当前线程池中的线程数大于或者等于用户指定的最小线程数时,通过检测线程创建单元420创建检测线程,从而完成了线程池的初始化。
在本实施例中,工作线程调用单元430包括:
工作线程调用模块431,用于在任务到达时,调用所述线程池队列中的工作线程,并将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务;
记录模块432,用于将活动状态设置为激活状态、运行状态设置为工作状态的工作线程记入所述已分配线程表。
其中,工作线程调用模块431包括:
判断子模块4311,用于在任务到达时,判断所述线程池队列中是否存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程;
工作线程状态设置子模块4312,用于将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务,执行子步骤S32;
临时工作线程创建子模块4313,用于在所述线程池队列中不存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程时,创建临时的工作线程,并将临时的工作线程送入所述线程池队列。
在本实施例中,工作线程调用单元430的工作流程如图6所示,判断子模块4311在任务到达时判断线程池队列中是否存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程,若有则通过工作线程状态设置子模块4312将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务。若没有空闲的工作线程,则通过临时工作线程创建子模块4313创建临时的工作线程,并将临时的工作线程送入线程池队列来处理任务。
在其他实施例中,线程池的数据结构参数还包括最大工作线程数,临时工作线程创建子模块4313在线程池队列中不存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程时,进一步判断当前工作线程数是否大于或者等于最大工作线程数,若否则创建临时的工作线程,并将临时的工作线程送入线程池队列,若是则不作任何处理,此时将等待空闲的工作线程出现。
在本实施例中,心跳信号检测单元440和假死线程处理单元450的工作流程如图7所示,通过心跳信号检测单元440周期检测各工作线程的心跳信号,若未在心跳周期内检测到心跳信号,则通过假死线程处理单元450将假死的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。
在本发明的线程池的管理系统400的第一实施例中,通过线程池来管理其中的工作线程,不依赖于操作系统托管,因此,在各种平台下,只要调用本发明的线程池的统一接口,就可以实现线程的调用。更进一步,通过创建检测线程来检测执行任务的工作线程是否发生假死,能够及时准确地检测出假死的线程,进而找到假死线程执行任务的程序中出错的位置并通知用户,使用户能够及时了解并进行相应的补救或者预警。
图8为本发明的线程池的管理系统400第二实施例的功能框图,如图8所示,本实施例与系统400第一实施例的区别在于,系统400还包括退出单元460,退出单元460用于在主线程退出时,释放所有工作线程的资源。因此,进程的主线程无需等待所有的工作线程执行完任务后退出后才退出,在主线程退出时,将释放所有工作线程的资源。无论主线程何时退出,都不会产生内存泄露或者因无法退出而造成卡死的现象,灵活度高。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (10)
1.一种线程池的管理方法,其特征在于,包括以下步骤:
S1、创建工作线程,将工作线程送入线程池队列;
S2、创建检测线程;
S3、调用所述线程池队列中的工作线程执行任务;
S4、通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;
S5、通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。
2.根据权利要求1所述的线程池的管理方法,其特征在于,步骤S1包括以下子步骤:
S11、设置线程池的数据结构参数,所述数据结构参数包括最小工作线程数和已分配线程表;
S12、基于所述最小工作线程量创建工作线程,工作线程的属性包括活动状态和运行状态,并将工作线程的活动状态设置为挂起状态、运行状态设置为空闲状态;
S13、将工作线程送入线程池队列。
3.根据权利要求2所述的线程池的管理方法,其特征在于,步骤S3包括以下子步骤:
S31、当有任务到达时,调用所述线程池队列中的工作线程,并将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务;
S32、将活动状态设置为激活状态、运行状态设置为工作状态的工作线程记入所述已分配线程表。
4.根据权利要求3所述的线程池的管理方法,其特征在于,子步骤S31包括以下次级子步骤:
S311、当有任务到达时,判断所述线程池队列中是否存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程,若是则执行次级子步骤S312,若否执行次级子步骤S313;
S312、将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务,执行子步骤S32;
S313、创建临时的工作线程,并将临时的工作线程送入所述线程池队列,执行次级子步骤S312。
5.根据权利要求4所述的线程池的管理方法,其特征在于,所述数据结构参数还包括最大工作线程数,在次级子步骤S313中,判断当前工作线程数是否大于或者等于所述最大工作线程数,若否则创建临时的工作线程,并将临时的工作线程送入所述线程池队列,执行次级子步骤S312。
6.根据权利要求3所述的线程池的管理方法,其特征在于,步骤S5包括以下子步骤:
S51、检测线程将在所述心跳周期内未接收到心跳信号的工作线程的运行状态设置为假死状态,从所述已分配线程表中将处于假死状态的工作线程移除,并释放处于假死状态的工作线程的所有资源;
S52、通过用户接口通知用户出错位置。
7.一种线程池的管理系统,其特征在于,包括:
工作线程创建单元(410),用于创建工作线程,并将工作线程送入线程池队列;
检测线程创建单元(420),用于创建检测线程;
工作线程调用单元(430),用于调用所述线程池队列中的工作线程执行任务;
心跳信号检测单元(440),用于通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;
假死线程处理单元(450),用于通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。
8.根据权利要求7所述的线程池的管理系统,其特征在于,所述工作线程创建单元(410)包括:
线程池参数设置模块(411),用于设置线程池的数据结构参数,所述数据结构参数包括最小工作线程量和已分配线程表;
工作线程创建模块(412),用于基于所述最小工作线程量创建工作线程,工作线程的属性包括活动状态和运行状态,并将工作线程的活动状态设置为挂起状态、运行状态设置为空闲状态;
分配模块(413),用于将工作线程送入线程池队列。
9.根据权利要求8所述的线程池的管理系统,其特征在于,所述工作线程调用单元(430)包括:
工作线程调用模块(431),用于在任务到达时,调用所述线程池队列中的工作线程,并将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务;
记录模块(432),用于将活动状态设置为激活状态、运行状态设置为工作状态的工作线程记入所述已分配线程表。
10.根据权利要求9所述的线程池的管理系统,其特征在于,所述工作线程调用模块(431)包括:
判断子模块(4311),用于在任务到达时,判断所述线程池队列中是否存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程;
工作线程状态设置子模块(4312),用于将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务;
临时工作线程创建子模块(4313),用于在所述线程池队列中不存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程时,创建临时的工作线程,并将临时的工作线程送入所述线程池队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410036823.XA CN103744723B (zh) | 2014-01-24 | 2014-01-24 | 一种线程池的管理方法和管理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410036823.XA CN103744723B (zh) | 2014-01-24 | 2014-01-24 | 一种线程池的管理方法和管理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103744723A true CN103744723A (zh) | 2014-04-23 |
CN103744723B CN103744723B (zh) | 2019-04-26 |
Family
ID=50501743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410036823.XA Active CN103744723B (zh) | 2014-01-24 | 2014-01-24 | 一种线程池的管理方法和管理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103744723B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572019A (zh) * | 2014-12-30 | 2015-04-29 | 浪潮(北京)电子信息产业有限公司 | 一种巡查任务的方法和装置 |
CN104794204A (zh) * | 2015-04-23 | 2015-07-22 | 上海新炬网络信息技术有限公司 | 一种数据库敏感数据自动识别方法 |
CN104915258A (zh) * | 2015-06-09 | 2015-09-16 | 北京京东尚科信息技术有限公司 | 分布式任务调度的方法和装置 |
CN104932936A (zh) * | 2015-06-05 | 2015-09-23 | 北京奇虎科技有限公司 | 数据处理方法与系统 |
CN106775984A (zh) * | 2016-12-26 | 2017-05-31 | 锐捷网络股份有限公司 | 一种管理线程池的方法和装置 |
CN106815064A (zh) * | 2015-11-27 | 2017-06-09 | 北京国双科技有限公司 | 环状数据处理架构的检测方法和装置 |
CN107526632A (zh) * | 2016-06-20 | 2017-12-29 | 咪咕互动娱乐有限公司 | 进程池扩充方法和装置 |
CN108052404A (zh) * | 2017-12-07 | 2018-05-18 | 郑州云海信息技术有限公司 | 一种服务器互联芯片中的数据地址检错机制 |
CN108279972A (zh) * | 2018-01-26 | 2018-07-13 | 郑州云海信息技术有限公司 | 一种lua虚拟机任务执行方法及相关装置 |
WO2018133713A1 (zh) * | 2017-01-23 | 2018-07-26 | 阿里巴巴集团控股有限公司 | 一种线程管理方法及装置 |
CN108460076A (zh) * | 2018-01-02 | 2018-08-28 | 神华集团有限责任公司 | 设备和信息管理方法以及模型 |
CN109254894A (zh) * | 2018-08-20 | 2019-01-22 | 曙光信息产业(北京)有限公司 | 芯片的心跳监测装置及方法 |
CN109766131A (zh) * | 2017-11-06 | 2019-05-17 | 上海宝信软件股份有限公司 | 基于多线程技术实现软件智能化自动升级的系统及方法 |
CN114546628A (zh) * | 2022-04-22 | 2022-05-27 | 北京奥星贝斯科技有限公司 | 一种线程处理方法、线程管理方法、装置以及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5894555A (en) * | 1995-06-23 | 1999-04-13 | Fujitsu Limited | Apparatus and method for managing shared resources |
CN1476178A (zh) * | 2003-07-08 | 2004-02-18 | 大唐移动通信设备有限公司 | 通信系统中实现高可用性(ha)的装置和方法 |
CN102340545A (zh) * | 2011-10-31 | 2012-02-01 | 深圳市五巨科技有限公司 | 服务器及其数据处理方法 |
CN102880540A (zh) * | 2012-08-27 | 2013-01-16 | 南京智达康无线通信科技股份有限公司 | 一种保障接入控制器在高负载下正常工作的方法 |
CN103064860A (zh) * | 2011-10-21 | 2013-04-24 | 阿里巴巴集团控股有限公司 | 数据库高可用实现方法及其装置 |
CN103246589A (zh) * | 2012-02-03 | 2013-08-14 | 京信通信系统(中国)有限公司 | 一种多线程的监控方法及装置 |
-
2014
- 2014-01-24 CN CN201410036823.XA patent/CN103744723B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5894555A (en) * | 1995-06-23 | 1999-04-13 | Fujitsu Limited | Apparatus and method for managing shared resources |
CN1476178A (zh) * | 2003-07-08 | 2004-02-18 | 大唐移动通信设备有限公司 | 通信系统中实现高可用性(ha)的装置和方法 |
CN103064860A (zh) * | 2011-10-21 | 2013-04-24 | 阿里巴巴集团控股有限公司 | 数据库高可用实现方法及其装置 |
CN102340545A (zh) * | 2011-10-31 | 2012-02-01 | 深圳市五巨科技有限公司 | 服务器及其数据处理方法 |
CN103246589A (zh) * | 2012-02-03 | 2013-08-14 | 京信通信系统(中国)有限公司 | 一种多线程的监控方法及装置 |
CN102880540A (zh) * | 2012-08-27 | 2013-01-16 | 南京智达康无线通信科技股份有限公司 | 一种保障接入控制器在高负载下正常工作的方法 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572019B (zh) * | 2014-12-30 | 2017-11-10 | 浪潮(北京)电子信息产业有限公司 | 一种巡查任务的方法和装置 |
CN104572019A (zh) * | 2014-12-30 | 2015-04-29 | 浪潮(北京)电子信息产业有限公司 | 一种巡查任务的方法和装置 |
CN104794204A (zh) * | 2015-04-23 | 2015-07-22 | 上海新炬网络信息技术有限公司 | 一种数据库敏感数据自动识别方法 |
CN104932936A (zh) * | 2015-06-05 | 2015-09-23 | 北京奇虎科技有限公司 | 数据处理方法与系统 |
CN104915258A (zh) * | 2015-06-09 | 2015-09-16 | 北京京东尚科信息技术有限公司 | 分布式任务调度的方法和装置 |
CN104915258B (zh) * | 2015-06-09 | 2019-07-02 | 北京京东尚科信息技术有限公司 | 分布式任务调度的方法和装置 |
CN106815064A (zh) * | 2015-11-27 | 2017-06-09 | 北京国双科技有限公司 | 环状数据处理架构的检测方法和装置 |
CN106815064B (zh) * | 2015-11-27 | 2020-02-07 | 北京国双科技有限公司 | 环状数据处理架构的检测方法和装置 |
CN107526632A (zh) * | 2016-06-20 | 2017-12-29 | 咪咕互动娱乐有限公司 | 进程池扩充方法和装置 |
CN106775984A (zh) * | 2016-12-26 | 2017-05-31 | 锐捷网络股份有限公司 | 一种管理线程池的方法和装置 |
CN106775984B (zh) * | 2016-12-26 | 2020-01-21 | 锐捷网络股份有限公司 | 一种管理线程池的方法和装置 |
WO2018133713A1 (zh) * | 2017-01-23 | 2018-07-26 | 阿里巴巴集团控股有限公司 | 一种线程管理方法及装置 |
CN109766131A (zh) * | 2017-11-06 | 2019-05-17 | 上海宝信软件股份有限公司 | 基于多线程技术实现软件智能化自动升级的系统及方法 |
CN108052404A (zh) * | 2017-12-07 | 2018-05-18 | 郑州云海信息技术有限公司 | 一种服务器互联芯片中的数据地址检错机制 |
CN108460076A (zh) * | 2018-01-02 | 2018-08-28 | 神华集团有限责任公司 | 设备和信息管理方法以及模型 |
CN108279972A (zh) * | 2018-01-26 | 2018-07-13 | 郑州云海信息技术有限公司 | 一种lua虚拟机任务执行方法及相关装置 |
CN109254894A (zh) * | 2018-08-20 | 2019-01-22 | 曙光信息产业(北京)有限公司 | 芯片的心跳监测装置及方法 |
CN109254894B (zh) * | 2018-08-20 | 2022-03-11 | 中科曙光信息产业成都有限公司 | 芯片的心跳监测装置及方法 |
CN114546628A (zh) * | 2022-04-22 | 2022-05-27 | 北京奥星贝斯科技有限公司 | 一种线程处理方法、线程管理方法、装置以及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103744723B (zh) | 2019-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103744723A (zh) | 一种线程池的管理方法和管理系统 | |
CN103294533B (zh) | 任务流控制方法及系统 | |
CN100462924C (zh) | 可调度性确定方法和实时系统 | |
CN101452404B (zh) | 一种嵌入式操作系统的任务调度装置及方法 | |
CN105159769A (zh) | 一种适用于计算能力异构集群的分布式作业调度方法 | |
CN109710416B (zh) | 资源调度方法及装置 | |
CN104239365A (zh) | 一种获取数据库连接池中连接的方法和数据库连接池 | |
CN106790565A (zh) | 一种网络附属存储集群系统 | |
CN106155803B (zh) | 一种基于信号量的线程池共享方法及系统 | |
CN102081554A (zh) | 云计算操作系统及其内核控制系统及方法 | |
CN107491346A (zh) | 一种应用的任务处理方法、装置及系统 | |
CN111190745A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN101719079A (zh) | 一种处理任务的方法及装置 | |
CN104168310A (zh) | 云端虚拟服务器的调度方法及装置 | |
CN109451056A (zh) | 多集群间服务器动态分配方法及系统 | |
CN109710414A (zh) | 一种作业调度方法、装置、设备及存储介质 | |
CN104461731B (zh) | 一种动态资源扩展中虚拟机资源回收方法和装置 | |
CN105068873A (zh) | 一种异构虚拟资源任务调度方法及系统 | |
CN105391968A (zh) | 一种视频会话分配方法及装置 | |
WO2012006920A1 (zh) | 一种自适应回收垃圾对象的系统及方法 | |
CN103049311B (zh) | 分区操作系统的综合化调度算法 | |
CN106897147A (zh) | 一种应用容器引擎容器资源调度方法及装置 | |
CN108595259A (zh) | 一种基于全局管理的内存池管理方法 | |
US9032251B2 (en) | Re-forming an application control tree without terminating the application | |
CN106060123B (zh) | 分布式数据系统的数据采集方法及分布式数据系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |