diff --git a/threadnacosndemo/pom.xml b/threadnacosndemo/pom.xml
new file mode 100644
index 0000000..0d0e33e
--- /dev/null
+++ b/threadnacosndemo/pom.xml
@@ -0,0 +1,40 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.3.12.RELEASE
+
+
+ com.woniu.connection
+ threadconnectiondemo
+ 1.0-SNAPSHOT
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+ 2.2.6.RELEASE
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+ 2.2.6.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+
+
\ No newline at end of file
diff --git a/threadnacosndemo/src/main/java/com/woniu/connection/MainApplication.java b/threadnacosndemo/src/main/java/com/woniu/connection/MainApplication.java
new file mode 100644
index 0000000..c95fd61
--- /dev/null
+++ b/threadnacosndemo/src/main/java/com/woniu/connection/MainApplication.java
@@ -0,0 +1,12 @@
+package com.woniu.connection;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class MainApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(MainApplication.class, args);
+ }
+}
diff --git a/threadnacosndemo/src/main/java/com/woniu/connection/config/DynamicThreadPool.java b/threadnacosndemo/src/main/java/com/woniu/connection/config/DynamicThreadPool.java
new file mode 100644
index 0000000..0e9f198
--- /dev/null
+++ b/threadnacosndemo/src/main/java/com/woniu/connection/config/DynamicThreadPool.java
@@ -0,0 +1,111 @@
+package com.woniu.connection.config;
+
+
+import com.alibaba.cloud.nacos.NacosConfigManager;
+import com.alibaba.cloud.nacos.NacosConfigProperties;
+import com.alibaba.nacos.api.config.listener.Listener;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.concurrent.*;
+
+/**
+ * Nacos作为服务配置中心,
+ * 实现一个简单的动态化线程池。
+ * 修改线程池核心线程数、
+ * 最大线程数为例,
+ */
+@RefreshScope
+@Configuration
+public class DynamicThreadPool implements InitializingBean {
+ @Value("${core.size}")
+ private String coreSize;
+
+ @Value("${max.size}")
+ private String maxSize;
+
+ private static ThreadPoolExecutor threadPoolExecutor;
+
+ @Autowired
+ private NacosConfigManager nacosConfigManager;
+
+ @Autowired
+ private NacosConfigProperties nacosConfigProperties;
+
+ @Override
+ public void afterPropertiesSet() throws Exception {
+ //按照nacos配置初始化线程池
+ threadPoolExecutor = new ThreadPoolExecutor(Integer.parseInt(coreSize), Integer.parseInt(maxSize), 10L, TimeUnit.SECONDS,
+ new LinkedBlockingQueue<>(10),
+ new ThreadFactoryBuilder().setNameFormat("c_t_%d").build(),
+ new RejectedExecutionHandler() {
+ @Override
+ public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
+ System.out.println("rejected!");
+ }
+ });
+
+ //nacos配置变更监听
+ nacosConfigManager.getConfigService().addListener("order-service-dev.yml", nacosConfigProperties.getGroup(),
+ new Listener() {
+ @Override
+ public Executor getExecutor() {
+ return null;
+ }
+
+ @Override
+ public void receiveConfigInfo(String configInfo) {
+ //配置变更,修改线程池配置
+ System.out.println(configInfo);
+ changeThreadPoolConfig(Integer.parseInt(coreSize), Integer.parseInt(maxSize));
+ }
+ });
+ }
+
+ /**
+ * 打印当前线程池的状态
+ */
+ public String printThreadPoolStatus() {
+ return String.format("core_size:%s,thread_current_size:%s;" +
+ "thread_max_size:%s;queue_current_size:%s,total_task_count:%s", threadPoolExecutor.getCorePoolSize(),
+ threadPoolExecutor.getActiveCount(), threadPoolExecutor.getMaximumPoolSize(), threadPoolExecutor.getQueue().size(),
+ threadPoolExecutor.getTaskCount());
+ }
+
+ /**
+ * 给线程池增加任务
+ *
+ * @param count
+ */
+ public void dynamicThreadPoolAddTask(int count) {
+ for (int i = 0; i < count; i++) {
+ int finalI = i;
+ threadPoolExecutor.execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ System.out.println(finalI);
+ Thread.sleep(10000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * 修改线程池核心参数
+ *
+ * @param coreSize
+ * @param maxSize
+ */
+ private void changeThreadPoolConfig(int coreSize, int maxSize) {
+ threadPoolExecutor.setCorePoolSize(coreSize);
+ threadPoolExecutor.setMaximumPoolSize(maxSize);
+ }
+}
\ No newline at end of file
diff --git a/threadnacosndemo/src/main/java/com/woniu/connection/web/ThreadPoolController.java b/threadnacosndemo/src/main/java/com/woniu/connection/web/ThreadPoolController.java
new file mode 100644
index 0000000..d170e65
--- /dev/null
+++ b/threadnacosndemo/src/main/java/com/woniu/connection/web/ThreadPoolController.java
@@ -0,0 +1,35 @@
+package com.woniu.connection.web;
+
+
+import com.woniu.connection.config.DynamicThreadPool;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+
+@RestController
+@RequestMapping("/threadpool")
+public class ThreadPoolController {
+
+ @Autowired
+ private DynamicThreadPool dynamicThreadPool;
+
+ /**
+ * 打印当前线程池的状态
+ */
+ @GetMapping("/print")
+ public String printThreadPoolStatus() {
+ return dynamicThreadPool.printThreadPoolStatus();
+ }
+
+ /**
+ * 给线程池增加任务
+ *
+ * @param count
+ */
+ @GetMapping("/add")
+ public String dynamicThreadPoolAddTask(int count) {
+ dynamicThreadPool.dynamicThreadPoolAddTask(count);
+ return String.valueOf(count);
+ }
+}
\ No newline at end of file
diff --git a/threadnacosndemo/src/main/resources/application.yml b/threadnacosndemo/src/main/resources/application.yml
new file mode 100644
index 0000000..caf4dfc
--- /dev/null
+++ b/threadnacosndemo/src/main/resources/application.yml
@@ -0,0 +1,3 @@
+spring:
+ profiles:
+ active: dev
\ No newline at end of file
diff --git a/threadnacosndemo/src/main/resources/bootstrap.yml b/threadnacosndemo/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..c745e12
--- /dev/null
+++ b/threadnacosndemo/src/main/resources/bootstrap.yml
@@ -0,0 +1,15 @@
+server:
+ port: 8010
+ # 应用名称(nacos会将该名称当做服务名称)
+spring:
+ application:
+ name: woniu-service
+ cloud:
+ nacos:
+ discovery:
+ namespace: public
+ server-addr: 192.168.56.10:8848
+ config:
+ server-addr: 192.168.56.10:8848
+ file-extension: yml
+
diff --git a/threadnacosndemo/target/classes/application.yml b/threadnacosndemo/target/classes/application.yml
new file mode 100644
index 0000000..caf4dfc
--- /dev/null
+++ b/threadnacosndemo/target/classes/application.yml
@@ -0,0 +1,3 @@
+spring:
+ profiles:
+ active: dev
\ No newline at end of file
diff --git a/threadnacosndemo/target/classes/bootstrap.yml b/threadnacosndemo/target/classes/bootstrap.yml
new file mode 100644
index 0000000..c745e12
--- /dev/null
+++ b/threadnacosndemo/target/classes/bootstrap.yml
@@ -0,0 +1,15 @@
+server:
+ port: 8010
+ # 应用名称(nacos会将该名称当做服务名称)
+spring:
+ application:
+ name: woniu-service
+ cloud:
+ nacos:
+ discovery:
+ namespace: public
+ server-addr: 192.168.56.10:8848
+ config:
+ server-addr: 192.168.56.10:8848
+ file-extension: yml
+
diff --git a/threadnacosndemo/target/classes/com/woniu/connection/MainApplication.class b/threadnacosndemo/target/classes/com/woniu/connection/MainApplication.class
new file mode 100644
index 0000000..838ffa5
Binary files /dev/null and b/threadnacosndemo/target/classes/com/woniu/connection/MainApplication.class differ
diff --git a/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool$1.class b/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool$1.class
new file mode 100644
index 0000000..5f82998
Binary files /dev/null and b/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool$1.class differ
diff --git a/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool$2.class b/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool$2.class
new file mode 100644
index 0000000..5b446cf
Binary files /dev/null and b/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool$2.class differ
diff --git a/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool$3.class b/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool$3.class
new file mode 100644
index 0000000..5a09702
Binary files /dev/null and b/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool$3.class differ
diff --git a/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool.class b/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool.class
new file mode 100644
index 0000000..8ea7208
Binary files /dev/null and b/threadnacosndemo/target/classes/com/woniu/connection/config/DynamicThreadPool.class differ
diff --git a/threadnacosndemo/target/classes/com/woniu/connection/web/ThreadPoolController.class b/threadnacosndemo/target/classes/com/woniu/connection/web/ThreadPoolController.class
new file mode 100644
index 0000000..9838ab1
Binary files /dev/null and b/threadnacosndemo/target/classes/com/woniu/connection/web/ThreadPoolController.class differ
diff --git a/threadnacosndemo/threadconnectiondemo.iml b/threadnacosndemo/threadconnectiondemo.iml
new file mode 100644
index 0000000..fa20781
--- /dev/null
+++ b/threadnacosndemo/threadconnectiondemo.iml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file