# DynamicThreadPoolDemo **Repository Path**: dongchenglin/DynamicThreadPoolDemo ## Basic Information - **Project Name**: DynamicThreadPoolDemo - **Description**: 线程池参数动态化实现Demo: 方案1 基于Nacos配置中心动态调整线程池参数 方案2 使用DynamicTp——基于配置中心的轻量级动态可监控线程池 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-12-19 - **Last Updated**: 2025-01-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
# DynamicThreadPoolDemo #### 介绍 线程池参数动态化实现Demo: 方案1 基于Nacos配置中心动态调整线程池参数 方案2 使用DynamicTp——基于配置中心的轻量级动态可监控线程池 #### 线程池参数动态化 在日常项目开发中,我们通常会使用线程池来处理一些并发场景,来提高任务处理的效率。但是在使用过程中,无法准确地设置线程池参数,只能在运行过程中,不断去调整参数,然后重启服务。 那如何实现在不重启服务的前提下,动态调整线程池参数呢? #### 线程池可调整的参数 线程池构造参数有8个,但是最核心的是3个:corePoolSize、maximumPoolSize,workQueue,它们最大程度地决定了线程池的任务分配和线程分配策略。考虑到在实际应用中我们获取并发性的场景主要是两种:(1)并行执行子任务,提高响应速度。这种情况下,应该使用同步队列,没有什么任务应该被缓存下来,而是应该立即执行。(2)并行执行大批次任务,提升吞吐量。这种情况下,应该使用有界队列,使用队列去缓冲大批量的任务,队列容量必须声明,防止任务无限制堆积。所以线程池只需要提供这三个关键参数的配置,并且提供两种队列的选择,就可以满足绝大多数的业务需求。 #### 实现方案 基于Nacos配置中心动态调整线程池参数 我们可以借助Nacos的Listener,在Bean初始化的时候,开启Nacos配置变更的监听,在监听逻辑里面更新线程池参数。 使用DynamicTp——基于配置中心的轻量级动态可监控线程池 DynamicTp 是一个基于配置中心实现的轻量级动态线程池管理工具,主要功能可以总结为动态调参、通知报警、运行监控、三方包线程池管理等几大类。