From c242c9159be5c2ea043c7506ccbd987f2912f4d8 Mon Sep 17 00:00:00 2001 From: "hongdan.qin" Date: Fri, 9 Dec 2022 17:26:35 +0800 Subject: [PATCH] generic refactor. --- .../spi/DynamicThreadPoolServiceLoader.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/spi/DynamicThreadPoolServiceLoader.java b/hippo4j-common/src/main/java/cn/hippo4j/common/spi/DynamicThreadPoolServiceLoader.java index da118e98..cd96e4a8 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/spi/DynamicThreadPoolServiceLoader.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/spi/DynamicThreadPoolServiceLoader.java @@ -17,6 +17,8 @@ package cn.hippo4j.common.spi; +import cn.hippo4j.common.spi.annotation.SingletonSPI; + import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Collections; @@ -26,14 +28,20 @@ import java.util.ServiceLoader; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; -import cn.hippo4j.common.spi.annotation.SingletonSPI; - /** * Dynamic thread-pool service loader. */ public class DynamicThreadPoolServiceLoader { - private static final Map, Collection> SERVICES = new ConcurrentHashMap<>(); + /** + * safe container。 + * key : SPI interface class type. + * value : collection whose elements are object of key's class type. + */ + private static final Map, Collection> SERVICES = new ConcurrentHashMap<>(); + + private DynamicThreadPoolServiceLoader() { + } /** * Register. @@ -53,8 +61,8 @@ public class DynamicThreadPoolServiceLoader { * @param * @return */ - private static Collection load(final Class serviceInterface) { - Collection result = new LinkedList<>(); + private static Collection load(final Class serviceInterface) { + Collection result = new LinkedList<>(); for (T each : ServiceLoader.load(serviceInterface)) { result.add(each); } @@ -63,7 +71,7 @@ public class DynamicThreadPoolServiceLoader { /** * Get Service instances - * + * * @param serviceClass serviceClass * @param * @return