一种线程池匹配方法、电子设备及存储介质与流程
本技术涉及计算机软件,尤其涉及一种线程池匹配方法、电子设备及存储介质。
背景技术:
1、线程池是提升系统性能和响应速度的关键技术之一,在现代软件开发中广泛应用。其作为一种高效的多线程处理机制,通过将任务添加到队列中,并在创建线程后自动启动这些任务,实现了线程的复用和管理,从而减少了线程创建和销毁的开销。线程池中的线程通常被设置为后台线程,使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。线程池的设计机制还包括动态调整线程数量:当某个线程在托管代码中空闲时(如正在等待某个事件),线程池会插入另一个辅助线程以保持所有处理器的繁忙状态;若所有线程池线程都始终保持繁忙,但队列中仍有挂起的工作,则线程池会在一段时间后创建新的辅助线程,但线程的总数不会超过预设的最大值。超过最大值的线程会进入等待队列,直至其他线程完成后才启动。这种由系统自动管理的线程池机制,极大地减轻了程序员对线程管理的负担,使他们能够专注于应用程序任务的处理。
2、目前,相关技术中通常将不同业务接口分配至独立的线程池,确保各类型业务接口仅在对应线程池中运行。当某个线程池内业务接口线程出现堵塞时,不会占用其他线程池资源,从而避免影响其他线程池的正常运行。然而,传统线程池的创建方式多为程序预先编写设定,在程序项目启动时即创建固定的线程池,导致业务接口与线程池形成固定绑定关系。这种固定绑定模式对于访问不稳定的业务接口,极易造成对应线程池时而闲置、时而过度拥堵的情况,难以实现线程池资源的合理高效调用。
技术实现思路
1、本技术的目的在于提供一种线程池匹配方法、电子设备及存储介质,旨在解决目前线程池的调用不够高效从而导致线程池时而闲置时而过度拥堵的问题。
2、为达到上述目的,本技术采用如下技术方案:
3、第一方面,本技术提供一种线程池匹配方法,包括:获取待接入业务接口的信息以及多个线程池的信息;其中,待接入业务接口的信息至少包括待接入业务接口的所需线程数量,线程池信息至少包括线程池中的可用线程数量;根据待接入业务接口的信息以及多个线程池的信息,对待接入业务接口进行线程池匹配,得到匹配结果;在匹配结果为匹配成功的情况下,将待接入业务接口的任务提交至匹配结果中指示的线程池的任务队列中。
4、本技术实施例提供的技术方案,能够通过实时获取业务接口的所需线程数量及线程池的可用线程数量,动态分配最合适的线程池,实现线程资源的按需分配与跨池调度,避免线程池过载或闲置,避免传统线程池配置中业务接口与线程池采用静态绑定的情况,从而降低线程资源浪费,实现线程池的高效化利用。
5、在一些实施例中,上述根据待接入业务接口的信息以及多个线程池的信息,对待接入业务接口进行线程池匹配,得到匹配结果,具体包括:在多个线程池中存在可用线程数量大于或等于待接入业务接口的所需线程数量的情况下,确定匹配结果为匹配成功;其中,匹配结果还用于指示与待接入业务接口匹配的线程池。
6、在一些实施例中,方法还包括:在多个线程池中存在可用线程数量小于待接入业务接口的所需线程数量的情况下,获取至少一个线程池组的信息;其中,每个线程池组中包括多个线程池,线程池组的信息至少包括线程池组中所有线程池的可用线程数量之和;根据待接入业务接口的信息以及至少一个线程池组的信息,再次对待接入业务接口进行线程池匹配,得到匹配结果。
7、基于上述实施例,可以在单个线程池无法满足需求时,引入线程池组的概念,通过组合多个线程池的可用线程数进行匹配,这样一来,通过线程池组聚合多个线程池的资源,解决单个线程池资源不足的问题。并且,支持跨线程池的资源调配,提升整体资源利用率,实现了线程池的灵活调度。
8、在一些实施例中,根据待接入业务接口的信息以及至少一个线程池组的信息,再次对待接入业务接口进行线程池匹配,得到匹配结果,包括:在至少一个线程池组中存在可用线程数量之和大于或等于待接入业务接口的所需线程数量的情况下,确定匹配结果为匹配成功;其中,匹配结果还用于指示与待接入业务接口匹配的线程池组中的所有线程池。
9、在一些实施例中,待接入业务接口的信息还包括任务的任务类型;将待接入业务接口的任务提交至匹配结果中指示的线程池的任务队列中,包括:将匹配结果中指示的线程池组中的所有线程池标记为标记分配线程池;根据分配线程池的可分配权重,将任务类型为cpu密集型的任务提交至各个分配线程池的任务队列中;将任务类型为io密集型的任务提交至各个分配线程池的剩余的任务队列中。
10、基于上述实施例,能够通过对业务接口所需线程任务类型的分析,在利用两个线程池中的可用线程对分配接口进行匹配时,将cpu密集型任务分配至高计算能力的线程池,io密集型任务分配至高i/o吞吐量的线程池,提升任务执行效率。
11、在一些实施例中,该方法还包括:在匹配结果为匹配失败的情况下,将待接入业务接口分配至阻塞队列中。如此,能够在资源不足时,通过阻塞队列缓冲业务请求,避免系统崩溃或任务丢失。
12、在一些实施例中,在上述获取待接入业务接口的信息以及多个线程池的信息之前,还包括:获取各个业务接口所需线程数以及各个线程对应的任务类型;根据各个业务接口所需线程数以及各个线程对应的任务类型,建立线程池;生成线程池信息集合,线程池信息集合用于实时反映各个线程池的可用线程数量。
13、基于上述实施例,通过预先建立线程池,减少业务接入时的资源分配时间,提升系统响应速度。并且,线程池信息集合实时反映可用线程数量,支持动态调整和优化资源分配策略。
14、在一些实施例中,上述根据各个业务接口所需线程数以及各个线程对应的任务类型,建立线程池,具体包括:根据各个业务接口的线程需求生成线程数量集合;其中,线程数量集合中的各个所需线程数量升序排列;对线程数量集合进行等距分割,得到多个线程数量子集;根据各个线程数量子集,确定各个待建立的线程池的核心线程数;根据各个待建立的线程池的核心线程数,建立多个线程池。
15、第二方面,本技术提供一种线程池匹配装置,该装置包括:
16、获取模块,用于获取待接入业务接口的信息以及多个线程池的信息;其中,待接入业务接口的信息至少包括待接入业务接口的所需线程数量,线程池信息至少包括线程池中的可用线程数量;
17、匹配模块,用于根据待接入业务接口的信息以及多个线程池的信息,对待接入业务接口进行线程池匹配,得到匹配结果;
18、处理模块,用于在匹配结果为匹配成功的情况下,将待接入业务接口的任务提交至匹配结果中指示的线程池的任务队列中。
19、第三方面,本技术还提供一种电子设备,包括:处理器和存储器;存储器存储有处理器可执行的指令;处理器被配置为执行指令时,使得通信装置实现如上述第一方面中所提供的任一方法。
20、第四方面,提供一种计算机可读存储介质,计算机可读存储介质存储计算机指令,当该计算机指令在计算机上运行时,使得计算机执行第一方面中所提供的任一方法。
21、第五方面,提供一种包含计算机指令的计算机程序产品,当该计算机指令在计算机上运行时,使得计算机执行第一方面中所提供的任一方法。
22、其中,第二方面至第五方面中任一种可能的实施例所带来的技术效果可参见上述第一方面,以及上述第一方面的任一种可能的实施例所带来的技术效果,此处不在赘述。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com