CN117348994A - 一种线程池配置的更新方法及装置 - Google Patents
一种线程池配置的更新方法及装置 Download PDFInfo
- Publication number
- CN117348994A CN117348994A CN202311279081.9A CN202311279081A CN117348994A CN 117348994 A CN117348994 A CN 117348994A CN 202311279081 A CN202311279081 A CN 202311279081A CN 117348994 A CN117348994 A CN 117348994A
- Authority
- CN
- China
- Prior art keywords
- thread pool
- configuration
- thread
- configuration update
- executor
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000010276 construction Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000003068 static effect Effects 0.000 description 5
- 210000001503 joint Anatomy 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000004083 survival effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种线程池配置的更新方法及装置,所述方法包括:获取配置更新请求,所述配置更新请求中包含配置更新参数;根据所述配置更新参数构建新线程池;其中,所述新线程池的初始配置匹配于所述配置更新参数;将原线程池中的线程调度至所述新线程池中。
Description
技术领域
本发明涉及线程池领域,尤其涉及一种线程池配置的更新方法及装置。
背景技术
线程是操作系统能够进行运算调度的最小单位,它被包含在近程之中,是进程中的实际运作单位。线程过多会带来调度开销,进而影响缓存局部性和整体性能。
线程池顾名思义,也就是把线程放在一个地方进行集中管理。线程池在任务还没有到来之前,可以创建一定数量的线程放入空闲队列中。这些线程都是处于阻塞状态,不消耗CPU,但占用较小的内存空间。当新任务到来时,线程池可以选择一个空闲线程,把任务传入此线程中运行;如果线程池中已经没有空闲线程,则可以新建若干个线程。当系统比较空闲时,大部分线程都处于暂停状态,线程池可以自动销毁一部分线程,回收系统资源。线程池不仅能够保证内核的充分利用,还能防止过分调度。线程池配置(如核心线程数、任务队列长度)的设置可以对线程池处理任务的性能产生直接影响。
相关技术中,若想要对线程池配置进行更新,需要对用于构建线程池的类进行重新编译,并根据重新编译后的类创建新的线程池。该方式不仅效率不高,还耗费了大量人力资源,增加了成本。
发明内容
有鉴于此,本发明提供一种线程池配置的更新方法及装置,以解决相关技术中的不足。
具体地,本发明是通过如下技术方案实现:
根据本发明的第一方面,提供了一种线程池配置的更新方法,所述方法包括:
获取配置更新请求,所述配置更新请求中包含配置更新参数;
根据所述配置更新参数构建新线程池;其中,所述新线程池的初始配置匹配于所述配置更新参数;
将原线程池中的线程调度至所述新线程池中。
根据本发明的第二方面,提供了一种线程池配置的更新装置,所述装置包括:
获取单元:获取配置更新请求,所述配置更新请求中包含配置更新参数;
构建单元:根据所述配置更新参数构建新线程池;其中,所述新线程池的初始配置匹配于所述配置更新参数;
调度单元:将原线程池中的线程调度至所述新线程池中。
根据本发明的第三方面,提供了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面中任一项所述的方法。
根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现第一方面中任一所述方法的步骤。
本发明的实施例提供的技术方案可以包括以下有益效果:
在本发明的实施例中,通过获取到的配置更新请求中包含的配置更新参数构建新线程池,并将原线程池中的线程调度至新线程池中,从而在无需重新编译线程池构建类的情况下,实现对线程池配置的更新,不仅提高了配置更新的效率,还降低了成本。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明公开实施例示出的一种线程池处理任务的示意图;
图2是本发明公开实施例示出的一种线程池配置的更新方法的流程图;
图3是本发明公开实施例示出的一种配置更新界面的示意图;
图4是本发明公开实施例示出的一种线程池执行器的示意图;
图5是本发明公开实施例示出的一种通过接口获取配置更新请求的示意图;
图6是本发明公开实施例示出的一种线程调度的示意图;
图7是本发明公开实施例示出的一种电子设备的示意结构图;
图8是本发明公开实施例示出的一种线程池配置的更新装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面结合附图对本发明的一种线程池配置的更新方法的实施例进行详细描述。
线程是操作系统能够进行运算调度的最小单位,它被包含在近程之中,是进程中的实际运作单位。线程过多会带来调度开销,进而影响缓存局部性和整体性能。
线程池顾名思义,也就是把线程放在一个地方进行集中管理。线程池在任务还没有到来之前,可以创建一定数量的线程放入空闲队列中。这些线程都是处于阻塞状态,不消耗CPU,但占用较小的内存空间。当新任务到来时,线程池可以选择一个空闲线程,把任务传入此线程中运行;如果线程池中已经没有空闲线程,则可以新建若干个线程。当系统比较空闲时,大部分线程都处于暂停状态,线程池可以自动销毁一部分线程,回收系统资源。线程池不仅能够保证内核的充分利用,还能防止过分调度。
图1是本发明公开示例性实施例示出的一种线程池处理任务的示意图,如图1所示,该示意图包括用户10和线程池20。用户10可以向线程池20下发任务,以使线程池20对任务进行处理。
线程池20中包含任务队列21和空闲队列22,任务队列21中排列有待处理的任务211-任务213,空闲队列22中维护有空闲线程221-空闲线程223。任务队列可以使用FIFO(First Input First Output,先进先出)原则,即先进队列的先处理,后进队列的后处理,例如:用户10新下发的任务213可以从队列尾部进入队列,此时,任务队列21中任务的处理顺序从前往后分别为:任务211,任务212,任务213。而空闲队列22虽然以“队列”命名,但是其可以使用链表形式。
如图1所示,在空闲队列22未空的情况下,即空闲队列22中存在空闲线程,任务队列21中的任务211可以唤醒空闲队列22中的空闲线程221对任务211进行处理,该空闲线程221也随之从空闲线程转变为忙碌线程231。
在空闲队列22为空的情况下,即空闲队列22中不存在空闲线程,线程池20可以创建新的线程对任务进行处理,新创建的线程可以被称为临时线程。在线程池20中不存在忙碌线程的情况下,说明线程池20中没有需要处理的任务,此时可以将临时线程销毁,从而节约内存空间。
线程池配置(如核心线程数、任务队列长度)的设置可以对线程池处理任务的性能产生直接影响。例如:将空闲队列的队列长度设置的过长,则会使得线程池中空闲线程的数量过多,从而导致内存空间的浪费;将空闲队列的队列长度设置的过短,则会使得线程池中空闲线程的数量较少,从而导致空闲线程的数量总是少于待处理任务的数量,线程池需要临时生成大量的临时线程对待处理任务进行处理,降低任务处理的效率;将最大线程数设置过大,超过CPU负荷,从而导致内存溢出,无法对任务进行响应。因此,及时对线程池配置进行更新调整对线程池管理而言十分重要。
相关技术中,若想要对线程池配置进行更新,需要对用于构建线程池的类进行重新编译,并根据重新编译后的类创建新的线程池。该方式不仅效率不高,还耗费了大量人力资源,增加了成本。
在一些情况下,管理员需要对线程池配置进行反复更新,例如:管理员需要针对不同的业务下发不同类型的任务,某些类型的任务不复杂,但是数量较多,因此需要将最大线程数的数值设置得高一些;或者,在对线程池进行性能测试时,需要不断调整线程池配置,以确定程序是否可以通过在不同配置时的性能指标。相关技术中的方法显然无法面对这些情况。
为解决相关技术中存在的不足,本说明书提出了一种线程池配置的更新方法。
图2是本发明公开示例性实施例示出的一种线程池配置的更新方法的流程图,具体可以包括如下步骤:
步骤202,获取配置更新请求,所述配置更新请求中包含配置更新参数。
配置更新请求可以为管理员针对具体业务而下发的、用于指示系统对线程池配置进行更新的请求。配置更新请求中可以包含配置更新参数。
一种情况下,该配置更新参数可以包括所有的配置参数,使得系统可以直接根据该配置更新参数进行配置更新,从而提升了配置更新的效率。在此情况下,系统可以先对配置更新参数进行识别,确定该配置更新参数是否与原线程池中的配置更新参数相同,在相同的情况下,可以向管理员反馈警示。
另一种情况下,该配置更新参数可以仅包括待更新的配置参数,其余无需更新的配置参数系统可以从原线程池处获取,该情况减少了配置更新请求所含的数据量,从而节省了带宽。
在一实施例中,所述配置更新参数包括以下至少之一:线程池名称,核心线程数,最大线程数,任务队列的长度,线程空闲时间。
核心线程数可以指线程池中线程数量的下限阈值。在线程池中的线程数量小于核心线程数的情况下,即使有空闲线程,线程池也会优先创建新的线程。最大线程数可以指线程池中线程数量的上限阈值。任务队列的长度可以指任务队列最多可以配列的任务数量。线程空闲时间可以指空闲线程的存活时间。当线程池中的线程数超过核心线程数时,多余的线程会被回收,此参数即为非核心线程的空闲时间,超过此时间将被回收。
当然,配置更新参数不限于上述列举的这些参数,例如还可以包括:阻塞策略、拒绝策略、空闲队列的队列长度等等,本说明书并不对此进行限制。
配置更新请求可以由管理员在如图3所示的配置更新界面对配置更新参数进行选定后生成。如图3所示,该配置更新界面可以对线程池的六项配置参数进行设置,包括:线程池名称,核心线程数,最大线程数,线程空闲时间,任务队列长度,空闲队列长度。管理员可以在输入框中输入对应的参数,并在完成时点击保存按钮301,实现对配置更新参数的设置,系统可以根据管理员输入的参数生成配置更新请求。当然,管理员也可以点击重置按钮302将配置参数重置为默认的设置。
在该实施例中,通过管理员在配置更新界面中输入的配置更新参数生成配置更新请求,使得管理员可以实现对配置更新参数的设置,进而实现对线程池配置的更新。
步骤204,根据所述配置更新参数构建新线程池;其中,所述新线程池的初始配置匹配于所述配置更新参数。
线程池可以由线程池构建类构建,其本质为线程池构建类构建的一个实例,而原线程池和新线程池为线程池构建类根据两套配置参数构建的两个不同的实例。
在一实施例中,所述根据所述配置更新参数构建新线程池,包括:调用线程池构建类,并根据所述线程池构建类中预定义的线程池构建方法和所述配置更新参数构建所述新线程池。
如前所述,配置更新参数可以为线程池所有的配置参数,也可以为待更新的配置参数。在配置更新参数为线程池所有的配置参数的情况下,可以将配置更新请求中的配置更新参数直接作为线程池构建方法的输入,实现对新线程池的构建;在配置更新参数为待更新的配置参数的情况下,可以先从原线程池处获取原线程池的配置参数,根据原线程池的配置参数以及配置更新参数生成新线程池的配置参数,并将该新线程池的配置参数作为线程池构建方法的输入,实现对新线程池的构建。
在该实施例中,通过线程池构建类中预定义的线程池构建方法和配置更新参数构建新线程池,使得系统可以在无需重新编译线程池构建类的情况下,实现对线程池配置的更新,不仅提高了配置更新的效率,还降低了成本。
步骤206,将原线程池中的线程调度至所述新线程池中。
线程池中的线程对应有不同的状态,例如:空闲状态和忙碌状态。处于空闲状态的线程可以称为空闲线程,空闲线程不消耗CPU,但占用较小的内存空间;处于忙碌状态的线程可以称为忙碌线程,忙碌线程为正在对任务进行处理的线程,需要消耗CPU以及内存。
在线程调度时,可以直接将原线程池中的全部线程调度至新线程池中,也可以仅调用原线程池中的部分线程,例如:仅将原线程池中的空闲线程调度至新线程池中,忙碌线程可以在执行结束、转换为空闲线程后被调度至新线程池中。本说明书将在后文中对线程调度进行详细说明,此处不再赘述。
在该实施例中,通过获取到的配置更新请求中包含的配置更新参数构建新线程池,并将原线程池中的线程调度至新线程池中,从而在无需重新编译线程池构建类的情况下,实现对线程池配置的更新,不仅提高了配置更新的效率,还降低了成本。
在一实施例中,所述方法还包括:调用线程池执行器类,并根据所述线程池执行器类中预定义的线程池执行器构建方法构建线程池执行器;其中,所述线程池执行器用于执行对应线程池中的线程。
线程池与线程池执行器的关系相当于地基与房屋,线程池作为地基制成线程池执行器的运行,线程池执行器则执行线程池中的线程。
具体的,线程池执行器通过导入任务对应的Runnable对象,并通过Runnable对象中的run方法执行流程。每一任务均对应有run方法,可以将run方法视为处理任务的逻辑。上述导入Runnable对象以及使用run方法的方式为已公开的技术,本说明书并不对此进行详细说明。
如前所述,在线程池为待处理任务分配空闲线程后,该空闲线程可以转换为忙碌线程,而忙碌线程于线程池执行器中对任务进行处理。如图4所示,在图1的基础上,线程池20还包含线程池执行器23,该线程池执行器23用于执行线程池中的线程。该线程池执行器23可以为同步执行器,也可以为异步执行器,本说明书并不对此进行限制。
在该实施例中,线程池中的忙碌线程在线程池执行器中执行,通过获取到的配置更新请求中包含的配置更新参数构建新线程池,并将原线程池中的线程调度至新线程池中,从而在无需重新编译线程池构建类的情况下,实现对线程池配置的更新,不仅提高了配置更新的效率,还降低了成本。
进一步的,所述线程池执行器类对接有配置更新接口;所述获取配置更新请求,包括:通过所述配置更新接口获取配置更新请求。
如图5所示,线程池执行器类52对接有配置更新接口53,线程池执行器类52可以通过配置更新接口53获取配置更新请求,并将获取到的配置更新请求传递至线程池构建类51,以使线程池构建类51根据配置更新请求构建新线程池51。
之所以线程池构建类需要通过线程池执行器类传递配置更新参数,是因为线程池构建类为静态类,而线程池执行器类为动态类。静态类在编译时就以确定,无法随意修改;动态类可以在编译后进行修改。静态类的执行速度相对较快,占用内存;动态类的执行速度相对较慢,在调用完后立即释放内存。因此,将线程池构建类设置为静态类、线程池执行器类设置为动态类,可以在确保线程池构建速度的同时,设置配置更新接口,动态获取配置更新请求。
在该实施例中,一方面,通过与线程池执行器类对接的配置更新接口获取配置更新请求,使得系统可以在无需重新编译线程池构建类的情况下,实现对线程池配置的更新,不仅提高了配置更新的效率,还降低了成本;另一方面,确保线程池构建速度。
在一实施例中,所述配置更新参数包括对应于所述新线程池的第一部分参数和对应于新线程池执行器的第二部分参数;所述根据所述配置更新参数构建新线程池,包括:根据所述第一部分参数构建所述新线程池;所述根据所述线程池执行器类中预定义的线程池执行器构建方法构建线程池执行器,包括:根据所述第二部分参数和所述线程池执行器构建方法构建所述新线程池执行器,以使所述新线程池执行器执行所述新线程池中的线程。
线程池与线程池执行器的关系相当于地基与房屋,线程池作为地基制成线程池执行器的运行,线程池执行器则执行线程池中的线程。配置更新请求不仅可以用于指示线程池配置的更新,还可以用于指示线程池执行器的更新。
如图5所示,线程池执行器类52在获取到配置更新请求中的配置更新参数后,可以保留第二部分参数,仅将第一部分参数传递至线程池构建类51。线程池执行器类52可以根据保留的第二部分参数构建新线程池执行器502,线程池构建类51可以根据第一部分参数构建新线程池501。
在该实施例中,一方面,通过配置更新请求,不仅实现对线程池配置的更新,还实现了线程池执行器配置的更新;另一方面,线程池执行器类仅传递一部分参数至线程池构建类,减少了传输的数据量,节省了带宽。
在一实施例中,所述原线程池中包括正在运行的线程和待运行的线程;所述将原线程池中的线程调度至所述新线程池中,包括:将所述待运行的线程调度至所述新线程池中;所述方法还包括:在所述正在运行的线程运行结束后,停止运行所述原线程池。
正在运行的线程可以指忙碌线程,待运行的线程可以指空闲线程。如图6所示,在线程调度的过程中,仅将原线程池61的任务队列611中的任务调度至新线程池62中的任务队列621中,以及将原线程池61的空闲队列612中的空闲线程调度至新线程池62中的空闲队列622中,不对原线程池执行器中的忙碌线程进行调度。在原线程池执行器中的忙碌线程执行完毕后,可以将原线程池61销毁。
在该实施例中,一方面,仅对空闲线程进行调度,不对忙碌线程进行调度,避免线程调度对任务处理造成影响;另一方面,通过在原线程池执行器中的忙碌线程执行完毕后将原线程池销毁,节约了资源。
与前述方法的实施例相对应,本发明还提供了装置、电子设备以及车辆的实施例。
图7是本发明实施例示出的一种电子设备的示意结构图。请参考图7,在硬件层面,该设备包括处理器701、网络接口702、内存703、非易失性存储器704以及内部总线705,当然还可能包括其他业务所需要的硬件。本发明一个或多个实施例可以基于软件方式来实现,比如由处理器701从非易失性存储器704中读取对应的计算机程序到内存703中然后运行。当然,除了软件实现方式之外,本发明一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。在该实施例中,通过获取到的配置更新请求中包含的配置更新参数构建新线程池,并将原线程池中的线程调度至新线程池中,从而在无需重新编译线程池构建类的情况下,实现对线程池配置的更新,不仅提高了配置更新的效率,还降低了成本。
图8本发明实施例示出的一种线程池配置的更新装置的框图。请参考图8,该装置可以应用于如图8所示的设备中,以实现本发明所述的技术方案,该装置包括:
获取单元802,用于获取配置更新请求,所述配置更新请求中包含配置更新参数;
构建单元804,用于根据所述配置更新参数构建新线程池;其中,所述新线程池的初始配置匹配于所述配置更新参数;
调度单元806,用于将原线程池中的线程调度至所述新线程池中
可选的,所述构建单元804具体用于:
调用线程池构建类,并根据所述线程池构建类中预定义的线程池构建方法和所述配置更新参数构建所述新线程池。
可选的,所述方法还包括:
调用单元808,用于调用线程池执行器类,并根据所述线程池执行器类中预定义的线程池执行器构建方法构建线程池执行器;其中,所述线程池执行器用于执行对应线程池中的线程。
可选的,所述配置更新参数包括对应于所述新线程池的第一部分参数和对应于新线程池执行器的第二部分参数;
所述构建单元804具体用于:根据所述第一部分参数构建所述新线程池;
所述调用单元808具体用于:根据所述第二部分参数和所述线程池执行器构建方法构建所述新线程池执行器,以使所述新线程池执行器执行所述新线程池中的线程。
可选的,所述线程池执行器构建类对接有配置更新接口;所述获取单元802具体用于:
通过所述配置更新接口获取配置更新请求。
可选的,所述原线程池中包括正在运行的线程和待运行的线程;
所述调度单元806具体用于:将所述待运行的线程调度至所述新线程池中;
所述方法还包括:停用单元810,用于在所述正在运行的线程运行结束后,停止运行所述原线程池。
可选的,所述配置更新参数包括以下至少之一:线程池名称,核心线程数,最大线程数,任务队列的长度,线程空闲时间。
在该实施例中,通过获取到的配置更新请求中包含的配置更新参数构建新线程池,并将原线程池中的线程调度至新线程池中,从而在无需重新编译线程池构建类的情况下,实现对线程池配置的更新,不仅提高了配置更新的效率,还降低了成本。
虽然本发明包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本发明内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种线程池配置的更新方法,其特征在于,所述方法包括:
获取配置更新请求,所述配置更新请求中包含配置更新参数;
根据所述配置更新参数构建新线程池;其中,所述新线程池的初始配置匹配于所述配置更新参数;
将原线程池中的线程调度至所述新线程池中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述配置更新参数构建新线程池,包括:
调用线程池构建类,并根据所述线程池构建类中预定义的线程池构建方法和所述配置更新参数构建所述新线程池。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
调用线程池执行器类,并根据所述线程池执行器类中预定义的线程池执行器构建方法构建线程池执行器;其中,所述线程池执行器用于执行对应线程池中的线程。
4.根据权利要求3所述的方法,其特征在于,所述配置更新参数包括对应于所述新线程池的第一部分参数和对应于新线程池执行器的第二部分参数;
所述根据所述配置更新参数构建新线程池,包括:根据所述第一部分参数构建所述新线程池;
所述根据所述线程池执行器类中预定义的线程池执行器构建方法构建线程池执行器,包括:根据所述第二部分参数和所述线程池执行器构建方法构建所述新线程池执行器,以使所述新线程池执行器执行所述新线程池中的线程。
5.根据权利要求3所述的方法,其特征在于,所述线程池执行器类对接有配置更新接口;所述获取配置更新请求,包括:
通过所述配置更新接口获取配置更新请求。
6.根据权利要求1所述的方法,其特征在于,所述原线程池中包括正在运行的线程和待运行的线程;
所述将原线程池中的线程调度至所述新线程池中,包括:将所述待运行的线程调度至所述新线程池中;
所述方法还包括:在所述正在运行的线程运行结束后,停止运行所述原线程池。
7.根据权利要求1所述的方法,其特征在于,所述配置更新参数包括以下至少之一:线程池名称,核心线程数,最大线程数,任务队列的长度,线程空闲时间。
8.一种线程池配置的更新装置,其特征在于,所述装置包括:
获取单元:获取配置更新请求,所述配置更新请求中包含配置更新参数;
构建单元:根据所述配置更新参数构建新线程池;其中,所述新线程池的初始配置匹配于所述配置更新参数;
调度单元:将原线程池中的线程调度至所述新线程池中。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7中任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311279081.9A CN117348994A (zh) | 2023-09-28 | 2023-09-28 | 一种线程池配置的更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311279081.9A CN117348994A (zh) | 2023-09-28 | 2023-09-28 | 一种线程池配置的更新方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117348994A true CN117348994A (zh) | 2024-01-05 |
Family
ID=89355172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311279081.9A Pending CN117348994A (zh) | 2023-09-28 | 2023-09-28 | 一种线程池配置的更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117348994A (zh) |
-
2023
- 2023-09-28 CN CN202311279081.9A patent/CN117348994A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582455B (zh) | 多线程任务处理方法、装置及存储介质 | |
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
CN109918141B (zh) | 线程执行方法、装置、终端及存储介质 | |
EP2503733B1 (en) | Data collecting method, data collecting apparatus and network management device | |
CN102096603B (zh) | MapReduce系统中的作业分解控制方法及设备 | |
WO2017080273A1 (zh) | 任务管理方法和系统、计算机存储介质 | |
CN104199730B (zh) | 一种基于同步i/o复用机制的单线程多任务处理方法 | |
US10467054B2 (en) | Resource management method and system, and computer storage medium | |
CN110795254A (zh) | 一种基于php处理高并发io的方法 | |
CN111506430B (zh) | 多任务下数据处理的方法、装置及电子设备 | |
CN110297661B (zh) | 基于amp构架dsp操作系统的并行计算方法、系统及介质 | |
CN110795238B (zh) | 负载计算方法、装置、存储介质及电子设备 | |
CN112486642B (zh) | 资源调度方法、装置、电子设备及计算机可读存储介质 | |
CN114217966A (zh) | 基于资源调整的深度学习模型动态批处理调度方法和系统 | |
CN112764904A (zh) | 基于多任务系统中防止低优先级任务饿死的方法 | |
EP2282265A1 (en) | A hardware task scheduler | |
CN111459622A (zh) | 调度虚拟cpu的方法、装置、计算机设备和存储介质 | |
CN109766168B (zh) | 任务调度方法和装置、存储介质以及计算设备 | |
CN111367645B (zh) | 一种实时任务调度控制方法、系统、设备及可读存储介质 | |
US20080313652A1 (en) | Notifying user mode scheduler of blocking events | |
CN101349975B (zh) | 一种在嵌入式操作系统上实现中断底半部机制的方法及装置 | |
CN103257892A (zh) | 一种基于宏组合的多任务调度方法及系统 | |
CN117348994A (zh) | 一种线程池配置的更新方法及装置 | |
CN109992359A (zh) | 一种事务调度方法 | |
CN114035926A (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 |