diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/thread/ExecutorHelper.java b/liteflow-core/src/main/java/com/yomahub/liteflow/thread/ExecutorHelper.java index e1249a820..42a518635 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/thread/ExecutorHelper.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/thread/ExecutorHelper.java @@ -8,12 +8,13 @@ */ package com.yomahub.liteflow.thread; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.google.common.collect.Maps; import com.yomahub.liteflow.exception.ThreadExecutorServiceCreateException; import com.yomahub.liteflow.property.LiteflowConfig; -import com.yomahub.liteflow.util.SpringAware; +import com.yomahub.liteflow.property.LiteflowConfigGetter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,8 +33,6 @@ public class ExecutorHelper { private static ExecutorHelper executorHelper; - private ExecutorService executorService; - /** * 此处使用Map缓存线程池信息 * key - 线程池构建者的Class全类名 @@ -89,12 +88,12 @@ public class ExecutorHelper { * 构建全局默认线程池 */ public ExecutorService buildExecutor() { - if (ObjectUtil.isNull(executorService)) { - LiteflowConfig liteflowConfig = SpringAware.getBean(LiteflowConfig.class); - assert liteflowConfig != null; - executorService = getExecutorBuilder(liteflowConfig.getThreadExecutorClass()).buildExecutor(); + LiteflowConfig liteflowConfig = LiteflowConfigGetter.get(); + if (!executorServiceMap.containsKey(liteflowConfig.getThreadExecutorClass())) { + ExecutorService executorService = getExecutorBuilder(liteflowConfig.getThreadExecutorClass()).buildExecutor(); + executorServiceMap.put(liteflowConfig.getThreadExecutorClass(), executorService); } - return executorService; + return executorServiceMap.get(liteflowConfig.getThreadExecutorClass()); } /** @@ -138,14 +137,11 @@ public class ExecutorHelper { LOG.error(e.getMessage(), e); throw new ThreadExecutorServiceCreateException(e.getMessage()); } - } - public ExecutorService getExecutorService() { - return executorService; - } - - public void setExecutorService(ExecutorService executorService) { - this.executorService = executorService; + public void clearExecutorServiceMap(){ + if (MapUtil.isNotEmpty(executorServiceMap)){ + executorServiceMap.clear(); + } } } diff --git a/liteflow-testcase-script-groovy/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-script-groovy/src/test/java/com/yomahub/liteflow/test/BaseTest.java index a00014d01..73938d978 100644 --- a/liteflow-testcase-script-groovy/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-script-groovy/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.spring.ComponentScanner; +import com.yomahub.liteflow.thread.ExecutorHelper; import org.junit.AfterClass; public class BaseTest { @@ -10,5 +11,6 @@ public class BaseTest { public static void cleanScanCache(){ ComponentScanner.cleanCache(); FlowBus.cleanCache(); + ExecutorHelper.loadInstance().clearExecutorServiceMap(); } } diff --git a/liteflow-testcase-script-qlexpress/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-script-qlexpress/src/test/java/com/yomahub/liteflow/test/BaseTest.java index a00014d01..73938d978 100644 --- a/liteflow-testcase-script-qlexpress/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-script-qlexpress/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.spring.ComponentScanner; +import com.yomahub.liteflow.thread.ExecutorHelper; import org.junit.AfterClass; public class BaseTest { @@ -10,5 +11,6 @@ public class BaseTest { public static void cleanScanCache(){ ComponentScanner.cleanCache(); FlowBus.cleanCache(); + ExecutorHelper.loadInstance().clearExecutorServiceMap(); } } diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 5ff84fcb3..a40787648 100644 --- a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -12,6 +12,6 @@ public class BaseTest { public static void cleanScanCache(){ ComponentScanner.cleanCache(); FlowBus.cleanCache(); - ExecutorHelper.loadInstance().setExecutorService(null); + ExecutorHelper.loadInstance().clearExecutorServiceMap(); } } diff --git a/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/BaseTest.java index a00014d01..73938d978 100644 --- a/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.spring.ComponentScanner; +import com.yomahub.liteflow.thread.ExecutorHelper; import org.junit.AfterClass; public class BaseTest { @@ -10,5 +11,6 @@ public class BaseTest { public static void cleanScanCache(){ ComponentScanner.cleanCache(); FlowBus.cleanCache(); + ExecutorHelper.loadInstance().clearExecutorServiceMap(); } }