小蔡学Java

动态线程池

2024-09-22 19:38 584 0 JVM / JUC 动态线程池线程池多线程

动态线程池

关于动态线程池,说白了也就是将线程池中的那个几个核心参数配置到nacos中,然后利用动态刷新nacos中的配置(不用重启服务),将线程池的使用情况读取渲染到UI页面,从而可以根据服务器的cpu的使用情况,动态调整核心参数(核心线程数,最大线程数,阻塞队列的可容纳的任务量大小...) 动态读取nacos中的配置有两种方式:

1. 通过@RefreshScope 动态读取核心参数

2. 通过自定义方式具体如下:

  • a. 自己实现一个NacosConfigListener 实现 ApplicationRunner 重写其中的run()方法。原因如下

  • b. 在重写的run()方法中实现对nacos配置的动态监听;注入NacosConfigManager(nacos自带的),通过这个bean对象获取线程池配置的配置中心中的dataId groupName

  • c. 并且向NacosConfigManager中(获取configService)添加自定义的listener,这个自定义的listener通过重写的receiveConfigInfo()方法读取nacos中的配置,将读取到的信息(configInfo)塞入properties中,传递给自定义的线程池manager(dynamicThreadPoolExecutorManager);

  • d. 这个自定义的dynamicThreadPoolExecutorManager通过读取ApplicationContext上下文获取线程池exector,然后将传递过来的properties(核心线程数,最大线程数,阻塞队列)set到exector中,从而实现动态更新

评论( 0 )

  • 博主 Mr Cai
  • 坐标 河南 信阳
  • 标签 Java、SpringBoot、消息中间件、Web、Code爱好者

文章目录