CN111488255A - 多线程并发监控方法、装置、设备及存储介质 - Google Patents
多线程并发监控方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111488255A CN111488255A CN202010229822.2A CN202010229822A CN111488255A CN 111488255 A CN111488255 A CN 111488255A CN 202010229822 A CN202010229822 A CN 202010229822A CN 111488255 A CN111488255 A CN 111488255A
- Authority
- CN
- China
- Prior art keywords
- thread
- task
- sub
- queue
- tasks
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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
- G06F9/5016—Allocation 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 the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及服务器高并发处理技术领域,公开了一种多线程并发监控方法、装置、设备及存储介质,用于防止出现服务器内存溢出、响应过慢情况,提高服务器运行的稳定性。所述方法包括:批量创建任务并提交任务队列中,初始化闭锁工具的任务计时器的原始值为子线程的任务总个数;遍历子线程任务并记录待执行的任务数量;判断该任务数量是否超过预设阈值;若未超过预设阈值则判断是否存在队列已满;若不存在队列已满则将子线程任务提交至子线程并阻塞主线程;记录每个任务运行结果信息;当每个子线程任务运行结束后,将闭锁工具的任务计时器的值减一并将任务运行结果信息返回给主线程;当任务计时器的值为0时,恢复主线程执行对应的主线程任务。
Description
技术领域
本发明涉及服务器高并发处理技术领域,尤其涉及一种多线程并发监控方法、装置、设备及存储介质。
背景技术
服务器处理高并发时需要开启多个线程并发请求几十甚至上百个外部数据接口,并等待所有接口响应返回数据后做进一步数据加工整合,因此服务器在处理高并发过程中涉及到线程同步,目前使用Java软件开发工具包中的闭锁工具CountDownLatch来实现多个线程并发同步。然而,在使用该闭锁工具时存在多线程同步执行后无法实时监控各个线程的执行信息以及异常状态,由此导致出现服务器内存溢出、响应过慢等问题,严重时将影响服务器运行的稳定性。
发明内容
本发明的主要目的在于处理多线程并发同步时监控各个线程的执行信息以及异常状态,从而防止出现服务器内存溢出、响应过慢等情况,提高服务器运行的稳定性。
为实现上述目的,本发明第一方面提供了一种多线程并发监控方法,包括:
批量创建任务并将已创建任务提交至有预设线程数量阈值的线程池的任务队列中,所述线程池包括主线程和子线程,所述已创建任务包括主线程任务及子线程任务,所述主线程执行对应的主线程任务、所述子线程执行对应的子线程任务;
初始化闭锁工具的任务计时器的原始值,所述原始值为所述子线程的任务总个数;
遍历所述任务队列中的每个子线程任务并记录所述任务队列中排队等待执行的子线程任务数量;
判断所述排队等待执行的子线程任务数量是否超过预设阈值,所述预设阈值为预先设置的所述任务队列中等待执行的子线程任务数量的阈值;
当所述排队等待执行的子线程任务数量未超过所述预设阈值,则判断是否存在所述线程池中队列已满的异常状态;
当不存在所述线程池中队列已满的异常状态,则将所述子线程任务发送至子线程并通过所述子线程执行所述子线程任务,并通过预设的等待方法处理所述主线程执行对应的主线程任务;
记录每一个所述子线程任务的任务运行结果信息,所述任务运行结果信息包括异常状态结果信息及成功状态结果信息;
当每一个所述子线程任务运行结束后,将所述闭锁工具的任务计时器的值减一并将对应的任务运行结果信息返回给主线程;
判断所述任务计时器的值是否为0;
当所述任务计时器的值为0时,结束被调用的所述预设的等待方法并恢复所述主线程执行对应的主线程任务。
本发明第二方面提供了一种多线程并发监控装置,包括:
任务创建及提交模块,用于批量创建任务并将已创建任务提交至有预设线程数量阈值的线程池的任务队列中,所述线程池包括主线程和子线程,所述已创建任务包括主线程任务及子线程任务,所述主线程执行对应的主线程任务、所述子线程执行对应的子线程任务;
任务计时器初始化模块,用于初始化闭锁工具的任务计时器的原始值,所述原始值为所述子线程的任务总个数;
遍历及记录模块,用于遍历所述任务队列中的每个子线程任务并记录所述任务队列中排队等待执行的子线程任务数量;
预设阈值判断模块,用于判断所述排队等待执行的子线程任务数量是否超过预设阈值,所述预设阈值为预先设置的所述任务队列中等待执行的子线程任务数量的阈值;
第一队列已满判断模块,用于当所述排队等待执行的子线程任务数量未超过所述预设阈值,则判断是否存在所述线程池中队列已满的异常状态;
子线程执行及主线程阻塞模块,用于当不存在所述线程池中队列已满的异常状态,则将所述子线程任务发送至子线程并通过所述子线程执行所述子线程任务,并通过预设的等待方法处理所述主线程执行对应的主线程任务;
子线程结果信息记录模块,用于记录每一个所述子线程任务的任务运行结果信息,所述任务运行结果信息包括异常状态结果信息及成功状态结果信息;
子线程结果信息返回模块,用于当每一个所述子线程任务运行结束后,将所述闭锁工具的任务计时器的值减一并将对应的任务运行结果信息返回给主线程;
任务计时器值判断模块,用于判断所述任务计时器的值是否为0;
主线程任务恢复模块,用于当所述任务计时器的值为0时,结束被调用的所述预设的等待方法并恢复所述主线程执行对应的主线程任务。
本发明第三方面提供了一种多线程并发监控设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互联;所述至少一个处理器调用所述存储器中的所述指令,以使得所述多线程并发监控设备执行上述第一方面所述的方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
本发明提供的技术方案中,批量创建任务并将已创建任务提交至线程池的任务队列中,初始化闭锁工具的任务计时器的原始值为子线程的任务总个数;遍历任务队列中的每个子线程任务并记录任务队列中排队等待执行的子线程任务数量;判断排队等待执行的子线程任务数量是否超过预设阈值;当排队等待执行的子线程任务数量未超过预设阈值,则判断是否存在线程池中队列已满的异常状态;当不存在线程池中队列已满的异常状态,则将子线程任务提交至子线程执行,并调用预设的等待方法阻塞主线程执行对应的主线程任务;记录每一个子线程任务的任务运行结果信息;当每一个子线程任务运行结束后,将闭锁工具的任务计时器的值减一并将对应的任务运行结果信息返回给主线程;当任务计时器的值为0时,结束预设的等待方法并恢复主线程执行对应的主线程任务。本发明实施例实现了处理多线程并发同步时监控各个线程的执行信息以及异常状态,从而防止出现服务器内存溢出、响应过慢等情况,提高服务器运行的稳定性。
附图说明
图1为本发明实施例中多线程并发监控方法的一个实施例示意图;
图2为本发明实施例中多线程并发监控方法的另一个实施例示意图;
图3为本发明实施例中多线程并发监控装置的一个实施例示意图;
图4为本发明实施例中多线程并发监控装置的另一个实施例示意图;
图5为本发明实施例中多线程并发监控设备的一个实施例示意图。
具体实施方式
高并发一般指通过互联网系统架构设计保证系统能够同时并行处理很多请求,本发明以贷款风控应用领域为例,按照具体的业务需求要对贷款申请人做审批,审批过程中通常会调用多个其他外部系统去查询与贷款申请人相关的、可用作风险判断的数据,这些数据来自不同的系统,由于考虑到服务的时效需要以最快的效率拿到数据,因此服务器需要开启多个线程并发请求几十甚至上百个外部数据接口,并等待所有接口响应返回数据后做进一步数据加工整合,可见在处理该贷款审批过程中的高并发时涉及到多个线程并发同步。目前使用基于Java的软件开发工具包中的闭锁工具CountDownLatch来实现多个线程并发同步,然而在使用该闭锁工具时存在多线程同步执行后无法实时监控各个线程的执行信息以及异常状态。
本发明实施例提供了一种多线程并发监控方法、装置、设备及存储介质,用于防止出现服务器内存溢出、响应过慢等情况,提高服务器运行的稳定性。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例进行描述。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中多线程并发监控方法的一个实施例包括:
101、批量创建任务并将已创建任务提交至有预设线程数量阈值的线程池的任务队列中,所述线程池包括主线程和子线程,所述已创建任务包括主线程任务及子线程任务,所述主线程执行对应的主线程任务、所述子线程执行对应的子线程任务。
具体的,本发明使用基于Java的软件开发工具包中的闭锁工具CountDownLatch来实现多个线程并发同步,在处理高并发过程中服务器首先批量创建任务并将已创建任务提交至线程池的任务队列中。其中,线程池用于接收任务,在线程池中定义了任务队列,线程池中包括主线程和子线程,有预设的线程数量阈值、即线程池中的最大线程数,此外已创建任务对应包括主线程任务及子线程任务,其中主线程用于执行对应的主线程任务、子线程用于执行对应的子线程任务,主线程即为核心线程,譬如处理对应的主线程任务为贷款审批任务。
102、初始化闭锁工具的任务计时器的原始值,所述原始值为所述子线程的任务总个数。
具体的,服务器通过初始化闭锁工具CountDownLatch的任务计时器的原始值为子线程的任务总个数。本发明以贷款审批场景为例进行说明,首先服务器批量创建的主线程任务为贷款审批,三个子线程任务为黑名单查询、手机状态查询、以及工商信息查询,即闭锁工具的任务计时器的原始值为3。在子线程处理子线程任务时先预定义对象,包括实现任务的外部数据接口、每个任务需要编写的业务处理逻辑代码,即各自的运行方法以及对应执行的业务逻辑。具体该例包含的三个任务,其中,手机状态查询任务通过调用一个外部HTTP接口查询贷款申请人的手机在网时长,工商信息查询任务通过调用一个外部HTTP接口查询代款申请人的工作单位的工商信息。
103、遍历所述任务队列中的每个子线程任务并记录所述任务队列中排队等待执行的子线程任务数量。
具体实施时,服务器以预定的搜索路线依次访问任务队列中的每个子线程任务并记录所述任务队列中排队等待执行的子线程任务数量,譬如按上述贷款审核场景中,当前任务队列中排队等待执行的子线程任务数量可能为0、或1、或2、或3。
104、判断所述排队等待执行的子线程任务数量是否超过预设阈值,所述预设阈值为预先设置的所述任务队列中等待执行的子线程任务数量的阈值。
进一步地,服务器判断所述排队等待执行的子线程任务数量是否超过预设阈值,所述预设阈值为预先设置的所述任务队列中等待执行的子线程任务数量的阈值。即譬如预先设置的线程池任务队列中等待执行的子线程任务数量的阈值为2。则如果当前任务队列中排队等待执行的子线程任务数量为3时,则超过预设阈值,如果当前任务队列中排队等待执行的子线程任务数量可能为0、或1、或2时,则未超过预设阈值。
105、当所述排队等待执行的子线程任务数量未超过所述预设阈值,则判断是否存在所述线程池中队列已满的异常状态。
进一步地,当服务器排队等待执行的子线程任务数量未超过所述预设阈值,即当前任务队列中排队等待执行的子线程任务数量可能为0、或1、或2时,则判断是否存在所述线程池中队列已满的异常状态,即判断线程池中的任务队列是否已满,队列已满为系统空间不足,为系统异常状态,可能导致出现服务器内存溢出。
进一步地,当服务器所述排队等待执行的子线程任务数量超过所述预设阈值,即当前任务队列中排队等待执行的子线程任务数量可能为3时,则调用预设的告警方法发出告警,以使使用方能监控到队列已满的系统异常状态,其中预设的告警方法的具体执行逻辑可以按照用户各自系统的处理逻辑来进行自定义,在此不作限定;并且在发出告警后判断是否存在所述线程池中队列已满的异常状态。
106、当不存在所述线程池中队列已满的异常状态,则将所述子线程任务发送至子线程并通过所述子线程执行所述子线程任务,并通过预设的等待方法处理所述主线程执行对应的主线程任务。
进一步地,当服务器不存在所述线程池中队列已满的异常状态,即系统空间内存尚足,则将所述子线程任务提交至线程池中的子线程执行,并调用预设的等待方法阻塞所述主线程执行对应的主线程任务。
进一步地,当服务器存在所述线程池中队列已满的异常状态,则将所述线程池的任务状态设置为队列已满、并将所述闭锁工具的任务计时器的值减一并调用所述预设的等待方法阻塞所述主线程执行对应的主线程任务。
本发明具体实施时,等待方法采用await方法,所有等待的主线程都会阻塞直到任务计数器为0。
107、记录每一个所述子线程任务的任务运行结果信息,所述任务运行结果信息包括异常状态结果信息及成功状态结果信息。
进一步地,服务器记录每一个子线程任务的任务运行结果信息,其中上述任务运行结果信息包括异常状态结果信息及成功状态结果信息。异常状态结果信息包括子线程任务的中断或超时的异常,成功状态结果信息即子线程任务运行完成,譬如上述黑名单查询任务运行过程中出现中断,手机状态查询任务运行过程中出现越时,而工商信息查询任务成功运行完成。
108、当每一个所述子线程任务运行结束后,将所述闭锁工具的任务计时器的值减一并将对应的任务运行结果信息返回给主线程。
进一步地,服务器在每一个所述子线程任务运行结束后,譬如譬如上述黑名单查询任务、手机状态查询任务、工商信息查询任务在每一个正常运行结束后,将闭锁工具的任务计时器的值减一并将对应的任务运行结果信息返回给主线程,即将上述黑名单查询任务运行过程中出现中断,手机状态查询任务运行过程中出现越时,而工商信息查询任务成功运行完成的结果信息返回给贷款审批主线程任务,即任务运行结果信息实时返回呈现给使用方,使用方能监控到各个线程的执行信息以及异常状态。
109、判断所述任务计时器的值是否为0。
本发明具体实施时,服务器在检查到任务计时器的值每次减一后判断任务计时器的值是否为0,若为0则说明所有子线程已执行完成,则转入步骤110继续恢复主线程;若不为0则说明仍有子线程任务尚在运行中,因此子线程需继续执行,直至任务计时器的值为0。
110、当所述任务计时器的值为0时,结束被调用的所述预设的等待方法并恢复所述主线程执行对应的主线程任务。
进一步地,当任务计时器的值为0时,服务器结束被调用的await方法并恢复主线程执行对应的贷款审批主线程任务。
由上述可见,本发明方法通过批量创建任务并提交任务队列中,初始化闭锁工具的任务计时器的值为任务总个数;遍历任务并记录待执行的任务数量;判断该任务数量是否超过预设阈值;若未超过预设阈值则判断是否存在队列已满;若不存在队列已满则将子线程任务提交至子线程并阻塞主线程;记录每个任务运行结果信息;当每个子线程任务运行结束后,将闭锁工具的任务计时器的值减一并将任务运行结果信息返回给主线程;当任务计时器的值为0时,恢复主线程执行对应的主线程任务。本发明解决了使用该闭锁工具时存在多线程同步执行后无法实时监控各个线程的执行信息以及异常状态,实现了多线程并发执行且有效监控各个线程的执行信息以及异常状态,从而防止出现服务器内存溢出、响应过慢等情况,提高服务器运行的稳定性。
进一步地,请参阅图2,本发明实施例中多线程并发监控方法的另一个实施例中,上述步骤107具体包括:
201、当目标子线程执行对应子线程任务开始时,记录对应子线程任务运行开始时间点。
具体实施时,当某一目标子线程执行对应子线程任务开始时,譬如目标子线程执行对应子线程任务为上述黑名单查询任务,则任务开始远行时服务器记录对应的任务运行开始时间点。在子线程执行过程中,子线程任务运行的时间点都会自动记录下来,用于跟踪每个子线程任务的时效情况。
202、调用所述对应子线程任务的运行方法并执行对应的业务逻辑。
具体实施时,服务器调用对应子线程任务的运行方法并执行对应的业务逻辑,譬如以黑名单查询任务为例,则调用并执行上述预定义对象中的黑名单查询任务对应编写的业务处理逻辑代码。
203、判断所述对应子线程任务运行时是否存在超时、中断的异常状态。
具体实施时,服务器还实时监控判断对应子线程任务、即黑名单查询任务运行时是否存在超时、中断的异常状态。
204、当所述对应子线程任务运行时存在超时、中断的异常状态,则设置所述目标子线程对应的任务状态属性为异常并记录相应的异常状态结果信息。
具体实施时,服务器对应子线程任务,即黑名单查询任务运行时存在超时、中断的异常状态,则设置黑名单查询任务对应的任务状态属性为异常并将该异常状态结果信息记录下来。
进一步地,当所述对应子线程任务运行时不存在超时、中断的异常状态,则设置所述目标子线程对应的任务状态属性为成功并记录相应的成功状态结果信息。
具体实施时,服务器对应子线程任务,即黑名单查询任务运行时不存在超时、中断的异常状态,则设置黑名单查询任务对应的任务状态属性为成功并将该成功状态结果信息记录下来。
205、当所述目标子线程执行对应子线程任务结束时,记录对应子线程任务运行结束时间点。
具体实施时,当目标子线程执行对应子线程任务,即黑名单查询任务运行结束时,还记录了任务运行结束时间点。本发明任务运行结束时的状态包括任务运行超时、中断或成功完成的状态。
由上可知,子线程在执行子线程任务时的超时、中断、成功完成的状态以及运行时效都会自动监控、记录并返回到主线程中,因此在多处使用闭锁工具场景时无需重复开发这些常用的监控功能,大大提高了研发效率,降低人力成本。
上面对本发明实施例中多线程并发监控方法进行了描述,下面对本发明实施例中多线程并发监控装置进行描述,请参阅图3,本发明实施例中多线程并发监控装置的一个实施例包括:
任务创建及提交模块301,用于批量创建任务并将已创建任务提交至有预设线程数量阈值的线程池的任务队列中,所述线程池包括主线程和子线程,所述已创建任务包括主线程任务及子线程任务,所述主线程执行对应的主线程任务、所述子线程执行对应的子线程任务。
任务计时器初始化模块302,用于初始化闭锁工具的任务计时器的原始值,所述原始值为所述子线程的任务总个数。
遍历及记录模块303,用于遍历所述任务队列中的每个子线程任务并记录所述任务队列中排队等待执行的子线程任务数量。
预设阈值判断模块304,用于判断所述排队等待执行的子线程任务数量是否超过预设阈值,所述预设阈值为预先设置的所述任务队列中等待执行的子线程任务数量的阈值。
第一队列已满判断模块305,用于当所述排队等待执行的子线程任务数量未超过所述预设阈值,则判断是否存在所述线程池中队列已满的异常状态。
子线程执行及主线程阻塞模块306,用于当不存在所述线程池中队列已满的异常状态,则将所述子线程任务发送至子线程并通过所述子线程执行所述子线程任务,并通过预设的等待方法处理所述主线程执行对应的主线程任务。
子线程结果信息记录模块307,用于记录每一个所述子线程任务的任务运行结果信息,所述任务运行结果信息包括异常状态结果信息及成功状态结果信息。
子线程结果信息返回模块308,用于当每一个所述子线程任务运行结束后,将所述闭锁工具的任务计时器的值减一并将对应的任务运行结果信息返回给主线程。
任务计时器值判断模块309,用于判断所述任务计时器的值是否为0;
主线程任务恢复模块310,用于当所述任务计时器的值为0时,结束被调用的所述预设的等待方法并恢复所述主线程执行对应的主线程任务。
可选的,在本发明多线程并发监控装置的另一种实现方式中,所述装置还包括:
第二队列已满判断模块,用于当所述排队等待执行的子线程任务数量超过所述预设阈值,则调用预设的告警方法发出告警并判断是否存在所述线程池中队列已满的异常状态。
可选的,在本发明多线程并发监控装置的另一种实现方式中,所述装置还包括:
队列已满设置及主线程阻塞模块,用于当存在所述线程池中队列已满的异常状态,则将所述线程池的任务状态设置为队列已满,并将所述闭锁工具的任务计时器的值减一并调用所述预设的等待方法阻塞所述主线程执行对应的主线程任务。
可选的,在本发明多线程并发监控装置的另一种实现方式中,如图4所示,所述子线程结果信息记录模块307具体包括:
开始时间点记录单元3071,用于当目标子线程执行对应子线程任务开始时,记录对应子线程任务运行开始时间点。
方法调用及执行单元3072,用于调用所述对应子线程任务的运行方法并执行对应的业务逻辑。
异常状态判断单元3073,用于判断所述对应子线程任务运行时是否存在超时、中断的异常状态。
异常记录单元3074,用于当所述对应子线程任务运行时存在超时、中断的异常状态,则设置所述目标子线程对应的任务状态属性为异常并记录相应的异常状态结果信息。
结束时间点记录单元3075,用于当所述目标子线程执行对应子线程任务结束时,记录对应子线程任务运行结束时间点。
可选的,在本发明多线程并发监控装置的另一种实现方式中,所述所述子线程结果信息记录模块307还包括:
成功记录单元,用于当所述对应子线程任务运行时不存在超时、中断的异常状态,则设置所述目标子线程对应的任务状态属性为成功并记录相应的成功状态结果信息。
上面图3和图4从模块化功能实体的角度对本发明实施例中的多线程并发监控装置进行详细描述,下面从硬件处理的角度对本发明实施例中多线程并发监控设备进行详细描述。
图5是本发明实施例提供的一种多线程并发监控设备的结构示意图,该多线程并发监控设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)501(例如,一个或一个以上处理器)和存储器509,一个或一个以上存储应用程序507或数据506的存储介质508(例如一个或一个以上海量存储设备)。其中,存储器509和存储介质508可以是短暂存储或持久存储。存储在存储介质508的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对多线程并发监控中的一系列指令操作。更进一步地,处理器501可以设置为与存储介质508通信,在多线程并发监控设备500上执行存储介质508中的一系列指令操作。
多线程并发监控设备500还可以包括一个或一个以上电源502,一个或一个以上有线或无线网络接口503,一个或一个以上输入输出接口504,和/或,一个或一个以上操作系统505,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图5中示出的多线程并发监控设备结构并不构成对多线程并发监控设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种多线程并发监控方法,其特征在于,包括:
批量创建任务并将已创建任务提交至有预设线程数量阈值的线程池的任务队列中,所述线程池包括主线程和子线程,所述已创建任务包括主线程任务及子线程任务,所述主线程执行对应的主线程任务,所述子线程执行对应的子线程任务;
初始化闭锁工具的任务计时器的原始值,所述原始值为所述子线程的任务总个数;
遍历所述任务队列中的每个子线程任务并记录所述任务队列中排队等待执行的子线程任务数量;
判断所述排队等待执行的子线程任务数量是否超过预设阈值,所述预设阈值为预先设置的所述任务队列中等待执行的子线程任务数量的阈值;
当所述排队等待执行的子线程任务数量未超过所述预设阈值,则判断是否存在所述线程池中队列已满的异常状态;
当不存在所述线程池中队列已满的异常状态,则将所述子线程任务发送至子线程并通过所述子线程执行所述子线程任务,并通过预设的等待方法处理所述主线程执行对应的主线程任务;
记录每一个所述子线程任务的任务运行结果信息,所述任务运行结果信息包括异常状态结果信息及成功状态结果信息;
当每一个所述子线程任务运行结束后,将所述闭锁工具的任务计时器的值减一并将对应的任务运行结果信息返回给主线程;
判断所述任务计时器的值是否为0;
当所述任务计时器的值为0时,结束所述预设的等待方法并恢复所述主线程执行对应的主线程任务。
2.如权利要求1所述的多线程并发监控方法,其特征在于,所述判断所述排队等待执行的子线程任务数量是否超过预设阈值,所述预设阈值为预先设置的所述任务队列中等待执行的子线程任务数量的阈值之后,所述方法还包括:
当所述排队等待执行的子线程任务数量超过所述预设阈值,则调用预设的告警方法发出告警并判断是否存在所述线程池中队列已满的异常状态。
3.如权利要求1所述的多线程并发监控方法,其特征在于,所述当所述任务计时器的值为0时,结束被调用的所述预设的等待方法并恢复所述主线程执行对应的主线程任务之前,所述方法还包括:
当存在所述线程池中队列已满的异常状态,则将所述线程池的任务状态设置为队列已满,并将所述闭锁工具的任务计时器的值减一并调用所述预设的等待方法阻塞所述主线程执行对应的主线程任务。
4.如权利要求1至3任一项所述的多线程并发监控方法,其特征在于,所述记录每一个所述子线程任务的任务运行结果信息,所述任务运行结果信息包括异常状态结果信息及成功状态结果信息,具体包括:
当目标子线程执行对应子线程任务开始时,记录对应子线程任务运行开始时间点;
调用所述对应子线程任务的运行方法并执行对应的业务逻辑;
判断所述对应子线程任务运行时是否存在超时、中断的异常状态;
当所述对应子线程任务运行时存在超时、中断的异常状态,则设置所述目标子线程对应的任务状态属性为异常并记录相应的异常状态结果信息;
当所述目标子线程执行对应子线程任务结束时,记录对应子线程任务运行结束时间点。
5.如权利要求4所述的多线程并发监控方法,其特征在于,所述判断所述对应子线程任务运行时是否存在超时、中断的异常状态之后,还包括:
当所述对应子线程任务运行时不存在超时、中断的异常状态,则设置所述目标子线程对应的任务状态属性为成功并记录相应的成功状态结果信息。
6.一种多线程并发监控装置,其特征在于,包括:
任务创建及提交模块,用于批量创建任务并将已创建任务提交至有预设线程数量阈值的线程池的任务队列中,所述线程池包括主线程和子线程,所述已创建任务包括主线程任务及子线程任务,所述主线程执行对应的主线程任务、所述子线程执行对应的子线程任务;
任务计时器初始化模块,用于初始化闭锁工具的任务计时器的原始值,所述原始值为所述子线程的任务总个数;
遍历及记录模块,用于遍历所述任务队列中的每个子线程任务并记录所述任务队列中排队等待执行的子线程任务数量;
预设阈值判断模块,用于判断所述排队等待执行的子线程任务数量是否超过预设阈值,所述预设阈值为预先设置的所述任务队列中等待执行的子线程任务数量的阈值;
第一队列已满判断模块,用于当所述排队等待执行的子线程任务数量未超过所述预设阈值,则判断是否存在所述线程池中队列已满的异常状态;
子线程执行及主线程阻塞模块,用于当不存在所述线程池中队列已满的异常状态,则将所述子线程任务发送至子线程并通过所述子线程执行所述子线程任务,并通过预设的等待方法处理所述主线程执行对应的主线程任务;
子线程结果信息记录模块,用于记录每一个所述子线程任务的任务运行结果信息,所述任务运行结果信息包括异常状态结果信息及成功状态结果信息;
子线程结果信息返回模块,用于当每一个所述子线程任务运行结束后,将所述闭锁工具的任务计时器的值减一并将对应的任务运行结果信息返回给主线程;
任务计时器值判断模块,用于判断所述任务计时器的值是否为0;
主线程任务恢复模块,用于当所述任务计时器的值为0时,结束被调用的所述预设的等待方法并恢复所述主线程执行对应的主线程任务。
7.如权利要求6所述的多线程并发监控装置,其特征在于,所述装置还包括:
第二队列已满判断模块,用于当所述排队等待执行的子线程任务数量超过所述预设阈值,则调用预设的告警方法发出告警并判断是否存在所述线程池中队列已满的异常状态。
8.如权利要求6所述的多线程并发监控装置,其特征在于,所述装置还包括:
队列已满设置及主线程阻塞模块,用于当存在所述线程池中队列已满的异常状态,则将所述线程池的任务状态设置为队列已满,并将所述闭锁工具的任务计时器的值减一并调用所述预设的等待方法阻塞所述主线程执行对应的主线程任务。
9.一种多线程并发监控设备,其特征在于,所述多线程并发监控设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器连接;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述多线程并发监控设备执行如权利要求1-5中任意一项所述的方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010229822.2A CN111488255A (zh) | 2020-03-27 | 2020-03-27 | 多线程并发监控方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010229822.2A CN111488255A (zh) | 2020-03-27 | 2020-03-27 | 多线程并发监控方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111488255A true CN111488255A (zh) | 2020-08-04 |
Family
ID=71798052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010229822.2A Pending CN111488255A (zh) | 2020-03-27 | 2020-03-27 | 多线程并发监控方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111488255A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000455A (zh) * | 2020-09-10 | 2020-11-27 | 华云数据控股集团有限公司 | 一种多线程任务处理方法、装置及电子设备 |
CN112463140A (zh) * | 2020-11-23 | 2021-03-09 | 乐聚(深圳)机器人技术有限公司 | 基于电子积木的编程方法、装置、电子设备及存储介质 |
CN112732405A (zh) * | 2021-01-08 | 2021-04-30 | 北京数衍科技有限公司 | Jvm线程监控方法、装置及电子设备 |
CN113132460A (zh) * | 2021-03-10 | 2021-07-16 | 浙江学海教育科技有限公司 | 线上试卷提交方法、装置、设备及介质 |
CN113268325A (zh) * | 2021-05-21 | 2021-08-17 | 北京达佳互联信息技术有限公司 | 一种调度任务的方法、装置及存储介质 |
CN113342539A (zh) * | 2021-05-31 | 2021-09-03 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备和存储介质 |
CN113485809A (zh) * | 2021-07-14 | 2021-10-08 | 上海通联金融服务有限公司 | 一种解决业务过程耗时高的方法 |
CN113485840A (zh) * | 2021-07-27 | 2021-10-08 | 中国银行股份有限公司 | 基于Go语言的多任务并行处理装置及方法 |
CN113760369A (zh) * | 2020-09-29 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 并发线程处理方法、装置、电子设备以及存储介质 |
CN115033525A (zh) * | 2021-03-05 | 2022-09-09 | 荣耀终端有限公司 | 文件系统管理方法及电子设备 |
-
2020
- 2020-03-27 CN CN202010229822.2A patent/CN111488255A/zh active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000455A (zh) * | 2020-09-10 | 2020-11-27 | 华云数据控股集团有限公司 | 一种多线程任务处理方法、装置及电子设备 |
CN112000455B (zh) * | 2020-09-10 | 2022-02-01 | 华云数据控股集团有限公司 | 一种多线程任务处理方法、装置及电子设备 |
CN113760369A (zh) * | 2020-09-29 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 并发线程处理方法、装置、电子设备以及存储介质 |
CN112463140A (zh) * | 2020-11-23 | 2021-03-09 | 乐聚(深圳)机器人技术有限公司 | 基于电子积木的编程方法、装置、电子设备及存储介质 |
CN112463140B (zh) * | 2020-11-23 | 2023-09-12 | 乐聚(深圳)机器人技术有限公司 | 基于电子积木的编程方法、装置、电子设备及存储介质 |
CN112732405A (zh) * | 2021-01-08 | 2021-04-30 | 北京数衍科技有限公司 | Jvm线程监控方法、装置及电子设备 |
CN112732405B (zh) * | 2021-01-08 | 2024-05-17 | 北京数衍科技有限公司 | Jvm线程监控方法、装置及电子设备 |
CN115033525A (zh) * | 2021-03-05 | 2022-09-09 | 荣耀终端有限公司 | 文件系统管理方法及电子设备 |
CN113132460A (zh) * | 2021-03-10 | 2021-07-16 | 浙江学海教育科技有限公司 | 线上试卷提交方法、装置、设备及介质 |
CN113268325A (zh) * | 2021-05-21 | 2021-08-17 | 北京达佳互联信息技术有限公司 | 一种调度任务的方法、装置及存储介质 |
CN113342539A (zh) * | 2021-05-31 | 2021-09-03 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备和存储介质 |
CN113485809A (zh) * | 2021-07-14 | 2021-10-08 | 上海通联金融服务有限公司 | 一种解决业务过程耗时高的方法 |
CN113485840A (zh) * | 2021-07-27 | 2021-10-08 | 中国银行股份有限公司 | 基于Go语言的多任务并行处理装置及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111488255A (zh) | 多线程并发监控方法、装置、设备及存储介质 | |
KR102072726B1 (ko) | 데이터베이스로의 미들-티어 트랜잭션 로그들의 인라인 위임을 지원하는 시스템들 및 방법들 | |
US6886064B2 (en) | Computer system serialization control method involving unlocking global lock of one partition, after completion of machine check analysis regardless of state of other partition locks | |
US7487504B2 (en) | Thread dispatch for multiprocessor computer systems | |
CN100498725C (zh) | 用于最小化计算机应用程序中的丢失的方法和系统 | |
US7330860B2 (en) | Fault tolerant mechanism to handle initial load of replicated object in live system | |
US20070050768A1 (en) | Incremental web container growth to control startup request flooding | |
US6754736B1 (en) | Information processing apparatus, data inputting/outputting method, and program storage medium therefor | |
CN101236515B (zh) | 多核系统单核异常的恢复方法 | |
US20050283673A1 (en) | Information processing apparatus, information processing method, and program | |
CN105700937A (zh) | 多线程任务处理方法和装置 | |
CN111400011B (zh) | 一种实时任务调度方法、系统、设备及可读存储介质 | |
CN110716793B (zh) | 一种分布式事务的执行方法、装置、设备及存储介质 | |
CN102081554A (zh) | 云计算操作系统及其内核控制系统及方法 | |
US20030135617A1 (en) | Intelligent system control agent | |
US7523113B2 (en) | Distributed system, computer and state transition control method for distributed system | |
CN102833120A (zh) | 一种快速自动化测试中处理网管服务器异常的方法及系统 | |
CN113485812B (zh) | 基于大数据量任务的分区并行处理方法及系统 | |
CN111736809B (zh) | 分布式机器人集群网络管理框架及其实现方法 | |
US20230308342A1 (en) | Network service management apparatus and network service management method | |
US6826761B1 (en) | Efficient timer management system | |
CN113364857A (zh) | 业务数据的处理方法、装置和服务器 | |
CN112199432A (zh) | 一种基于分布式的高性能数据etl装置及控制方法 | |
KR100953732B1 (ko) | 테스크 관리 장치 | |
US20230147133A1 (en) | Multiple operation modes in backup operator |
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 |