From 2d4c0e19c01521358c0de997b2520b359b130fed Mon Sep 17 00:00:00 2001 From: "chen.ma" Date: Thu, 8 Jul 2021 22:23:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=80=E5=8F=91=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E6=B1=A0=E7=BB=9F=E8=AE=A1=E6=8C=87=E6=A0=87.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/config/ThreadPoolConfig.java | 57 ++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/example/src/main/java/io/dynamic/threadpool/example/config/ThreadPoolConfig.java b/example/src/main/java/io/dynamic/threadpool/example/config/ThreadPoolConfig.java index bbd530b2..c7f27b59 100644 --- a/example/src/main/java/io/dynamic/threadpool/example/config/ThreadPoolConfig.java +++ b/example/src/main/java/io/dynamic/threadpool/example/config/ThreadPoolConfig.java @@ -1,26 +1,79 @@ package io.dynamic.threadpool.example.config; +import io.dynamic.threadpool.starter.core.GlobalThreadPoolManage; import io.dynamic.threadpool.starter.wrap.DynamicThreadPoolWrap; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import javax.annotation.PostConstruct; +import java.util.Random; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + /** * 线程池配置 * * @author chen.ma * @date 2021/6/20 17:16 */ +@Slf4j @Configuration public class ThreadPoolConfig { + private String messageConsumePrefix = "message-consume"; + + private String messageProducePrefix = "message-produce"; + + private String customPoolPrefix = "custom-pool"; + @Bean public DynamicThreadPoolWrap messageCenterConsumeThreadPool() { - return new DynamicThreadPoolWrap("message-consume"); + return new DynamicThreadPoolWrap(messageConsumePrefix); } @Bean public DynamicThreadPoolWrap messageCenterProduceThreadPool() { - return new DynamicThreadPoolWrap("message-produce"); + return new DynamicThreadPoolWrap(messageProducePrefix); + } + + @Bean + public DynamicThreadPoolWrap customPool() { + return new DynamicThreadPoolWrap(customPoolPrefix); } + @PostConstruct + @SuppressWarnings("all") + public void testExecuteTask() { + log.info("测试线程池运行时状态接口, 30s 后开始触发拒绝策略..."); + + ScheduledExecutorService scheduledThreadPool = Executors.newSingleThreadScheduledExecutor(); + scheduledThreadPool.scheduleAtFixedRate(() -> { + DynamicThreadPoolWrap executorService = GlobalThreadPoolManage.getExecutorService(customPoolPrefix); + ThreadPoolExecutor pool = executorService.getPool(); + try { + pool.execute(() -> { + log.info("线程池名称 :: {}, 正在执行即将进入阻塞...", Thread.currentThread().getName()); + try { + int maxRandom = 10; + int temp = 2; + Random random = new Random(); + // 这里为了赋值线程池 completedTaskCount + if (random.nextInt(maxRandom) % temp == 0) { + Thread.sleep(10241024); + } else { + Thread.sleep(3000); + } + } catch (InterruptedException e) { + // ignore + } + }); + } catch (Exception ex) { + // ignore + } + + }, 5, 2, TimeUnit.SECONDS); + } }