CN112052094A - 一种基于多线程的任务执行方法 - Google Patents

一种基于多线程的任务执行方法 Download PDF

Info

Publication number
CN112052094A
CN112052094A CN202010938953.8A CN202010938953A CN112052094A CN 112052094 A CN112052094 A CN 112052094A CN 202010938953 A CN202010938953 A CN 202010938953A CN 112052094 A CN112052094 A CN 112052094A
Authority
CN
China
Prior art keywords
thread
task
queue
threads
execution
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
CN202010938953.8A
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.)
Chaozhou Zhuoshu Big Data Industry Development Co Ltd
Original Assignee
Chaozhou Zhuoshu Big Data Industry Development 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 Chaozhou Zhuoshu Big Data Industry Development Co Ltd filed Critical Chaozhou Zhuoshu Big Data Industry Development Co Ltd
Priority to CN202010938953.8A priority Critical patent/CN112052094A/zh
Publication of CN112052094A publication Critical patent/CN112052094A/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/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
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

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

一种基于多线程的任务执行方法
技术领域
本发明涉及多线程技术领域,具体提供一种基于多线程的任务执行方法。
背景技术
对于web项目或者其他的项目中,常常会涉及到任务的执行,并且任务的类型可能涉及到多重,不同的任务可能涉及到定时执行。如果每种类型的任务都自定义一套任务执行工具,会造成项目中代码的冗余,增加后期代码的维护难度。
发明内容
本发明是针对上述现有技术的不足,提供一种实用性强的基于多线程的任务执行方法。
本发明解决其技术问题所采用的技术方案是:
一种基于多线程的任务执行方法,建立线程池,初次建立线程放入线程池,线程数据根据实际情况设置初始值,并设置最大线程数量,当实际使用过程中线程数量不足以满足实际时会新建线程放入线程池中,当有空闲线程并且总线程数据量大于初始值时会杀死线程并从线程池中剔除,使线程池中的线程数量等于初始值;
当执行任务量大于最大线程数量时,任务执行进入阻塞排队状态,通过动态代理的方式对不同任务进行新建及执行。
进一步的,具体有如下步骤:
首先,设置配置参数,设置初始线程数量值,每次增加线程增量值,最大线程数量值;
然后,新建线程池生成类,初始化初始线程数量的线程放入线程池中,并配置线程生成类随系统启动。
进一步的,设置线程新增程序,当线程数据量不够时,新建参数中增量值数量的线程并放入线程池中,增加动态代理类,供生成不同的任务执行类。
进一步的,增加队列任务信息T_manager_queue,存储执行中的任务的执行状态,调用服务器名称及端口、任务名称、任务类别和执行类信息。
进一步的,启动任务信息T_manager_queue监听程序,监听T_manager_queue增加的任务,并从T_manager_queue中拿取任务,并存储到任务待分配队列wait_distribute_queue中。
进一步的,启动程序监听wait_distribute_queue队列,如果有新的任务,并且有空闲线程则从移除wait_distribute_queue队列中的任务,分配到负载均衡的服务器中的wait_start_queue队列中。
进一步的,启动程序监听队列wait_start_queue,当有线程空闲时,将任务从wait_start_queue队列中移除,并插入到running_queue,并更改对应的T_manager_queue中对应任务的执行状态,并根据任务信息中的类信息,动态代理生成对应的任务执行类,启动任务。
进一步的,任务执行成功后,从running_queue中的对应的任务信息剔除,并更改T_manager_queue队列中的任务信息,通过rpc回调通知执行类,任务执行效果。
本发明的一种基于多线程的任务执行方法和现有技术相比,具有以下突出的有益效果:
整合项目中要执行的任务类型,合并并提取成工具,直接进入到需要的项目中。方便项目中使用,适用于多项目之间的任务调用执行。可以减少项目的开发量,减少项目中的代码冗余,方便后期项目的维护开发工作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1是一种基于多线程的任务执行方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
下面给出一个最佳实施例:
如图1所示,本实施例中的一种基于多线程的任务执行方法,建立线程池,初次建立10个线程放入线程池,线程数据根据实际情况设置初始值,并设置最大线程数量,当实际使用过程中线程数量不足以满足实际时会新建线程放入线程池中,当有空闲线程并且总线程数据量大于初始值时会杀死线程并从线程池中剔除,使线程池中的线程数量等于初始值;
当执行任务量大于最大线程数量时,任务执行进入阻塞排队状态,通过动态代理的方式对不同任务进行新建及执行。
具体实现步骤如下:
S1、设置配置参数,设置初始线程数量值,每次增加线程增量值,最大线程数量值。
S2、新建线程池生成类,初始化初始线程数量的线程放入线程池中,并配置线程生成类随系统启动。
S3、设置线程新增程序,当线程数据量不够时,新建参数中增量值数量的线程并放入线程池中。
S4、增加动态代理类,供生成不同的任务执行类。
S5、增加队列任务信息T_manager_queue,存储执行中的任务的执行状态,调用服务器名称及端口,任务名称,任务类别,执行类信息等。
S6、启动任务信息T_manager_queue监听程序,监听T_manager_queue增加的任务,并从T_manager_queue中拿取任务,并存储到任务待分配队列wait_distribute_queue中。
S7、启动程序监听wait_distribute_queue队列,如果有新的任务,并且有空闲线程则从移除wait_distribute_queue队列中的任务,分配到负载均衡的服务器中的wait_start_queue队列中。
S8、启动程序监听队列wait_start_queue,当有线程空闲时,将任务从wait_start_queue队列中移除,并插入到running_queue,并更改对应的T_manager_queue中对应任务的执行状态。并根据任务信息中的类信息,动态代理生成对应的任务执行类,启动任务。
S9、任务执行成功后,从running_queue中的对应的任务信息剔除,并更改T_manager_queue队列中的任务信息,通过rpc回调通知执行类,任务执行效果。
上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种基于多线程的任务执行方法权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (8)

1.一种基于多线程的任务执行方法,其特征在于,建立线程池,初次建立线程放入线程池,线程数据根据实际情况设置初始值,并设置最大线程数量,当实际使用过程中线程数量不足以满足实际时会新建线程放入线程池中,当有空闲线程并且总线程数据量大于初始值时会杀死线程并从线程池中剔除,使线程池中的线程数量等于初始值;
当执行任务量大于最大线程数量时,任务执行进入阻塞排队状态,通过动态代理的方式对不同任务进行新建及执行。
2.根据权利要求1所述的一种基于多线程的任务执行方法,其特征在于,具体有如下步骤:
首先,设置配置参数,设置初始线程数量值,每次增加线程增量值,最大线程数量值;
然后,新建线程池生成类,初始化初始线程数量的线程放入线程池中,并配置线程生成类随系统启动。
3.根据权利要求2所述的一种基于多线程的任务执行方法,其特征在于,
设置线程新增程序,当线程数据量不够时,新建参数中增量值数量的线程并放入线程池中,增加动态代理类,供生成不同的任务执行类。
4.根据权利要求3所述的一种基于多线程的任务执行方法,其特征在于,增加队列任务信息T_manager_queue,存储执行中的任务的执行状态,调用服务器名称及端口、任务名称、任务类别和执行类信息。
5.根据权利要求4所述的一种基于多线程的任务执行方法,其特征在于,启动任务信息T_manager_queue监听程序,监听T_manager_queue增加的任务,并从T_manager_queue中拿取任务,并存储到任务待分配队列wait_distribute_queue中。
6.根据权利要求5所述的一种基于多线程的任务执行方法,其特征在于,启动程序监听wait_distribute_queue队列,如果有新的任务,并且有空闲线程则从移除wait_distribute_queue队列中的任务,分配到负载均衡的服务器中的wait_start_queue队列中。
7.根据权利要求6所述的一种基于多线程的任务执行方法,其特征在于,启动程序监听队列wait_start_queue,当有线程空闲时,将任务从wait_start_queue队列中移除,并插入到running_queue,并更改对应的T_manager_queue中对应任务的执行状态,并根据任务信息中的类信息,动态代理生成对应的任务执行类,启动任务。
8.根据权利要求7所述的一种基于多线程的任务执行方法,其特征在于,任务执行成功后,从running_queue中的对应的任务信息剔除,并更改T_manager_queue队列中的任务信息,通过rpc回调通知执行类,任务执行效果。
CN202010938953.8A 2020-09-09 2020-09-09 一种基于多线程的任务执行方法 Pending CN112052094A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010938953.8A CN112052094A (zh) 2020-09-09 2020-09-09 一种基于多线程的任务执行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010938953.8A CN112052094A (zh) 2020-09-09 2020-09-09 一种基于多线程的任务执行方法

Publications (1)

Publication Number Publication Date
CN112052094A true CN112052094A (zh) 2020-12-08

Family

ID=73610567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010938953.8A Pending CN112052094A (zh) 2020-09-09 2020-09-09 一种基于多线程的任务执行方法

Country Status (1)

Country Link
CN (1) CN112052094A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112688935A (zh) * 2020-12-22 2021-04-20 浪潮卓数大数据产业发展有限公司 一种基于多线程的数据加密推送方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591721A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 一种分配线程执行任务的方法和系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591721A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 一种分配线程执行任务的方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HALF: "JAVA代理模式的理解和应用", 《HTTPS://SEGMENTFAULT.COM/A/1190000019684255》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112688935A (zh) * 2020-12-22 2021-04-20 浪潮卓数大数据产业发展有限公司 一种基于多线程的数据加密推送方法

Similar Documents

Publication Publication Date Title
CN106802826B (zh) 一种基于线程池的业务处理方法及装置
CN109582455B (zh) 多线程任务处理方法、装置及存储介质
CN109582447B (zh) 计算资源分配方法、任务处理方法及装置
US20030233485A1 (en) Event queue
CN107391243B (zh) 线程任务处理设备、装置及方法
CN107273182B (zh) 一种虚拟机资源动态扩充方法及系统
CN111949386A (zh) 一种任务调度方法、系统、计算装置及可读存储介质
CN108762905B (zh) 一种多任务事件的处理方法和装置
CN110673927B (zh) 一种虚拟机的调度方法和装置
CN106528065B (zh) 一种线程获取方法及设备
CN109660569B (zh) 一种多任务并发执行方法、存储介质、设备及系统
CN107479981B (zh) 一种基于异步调用实现同步调用的处理方法及装置
CN112817710B (zh) 定时任务处理方法、系统、计算机设备及计算机存储介质
CN108717380B (zh) 消息处理方法和装置
CN112052094A (zh) 一种基于多线程的任务执行方法
CN111767125B (zh) 任务执行方法、装置、电子设备、存储介质
CN111104218B (zh) 存储系统数据同步方法、装置、设备及可读存储介质
CN112860401A (zh) 任务调度方法、装置、电子设备和存储介质
CN111708618A (zh) 一种基于Java多线程的处理方法和装置
CN116661960A (zh) 一种批量任务处理方法、装置、设备以及存储介质
CN111176847B (zh) 物理核超多线程服务器上大数据集群性能优化方法及装置
CN113342512B (zh) 一种io任务静默与驱动方法、装置及相关设备
CN112835692B (zh) 一种日志消息驱动任务方法、系统、存储介质及设备
CN111290868B (zh) 任务处理方法、装置和系统以及流程引擎
CN111400368B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20201208

RJ01 Rejection of invention patent application after publication