From 19d4a85777992cee1a7aaf59fb7f8e4ac35b6e74 Mon Sep 17 00:00:00 2001 From: Dmego Date: Wed, 17 May 2023 12:16:37 +0800 Subject: [PATCH] optimize: fix StyleCheck errors for hippo4j-threadpool-core (#1289) * optimize: fix StyleCheck errors for hippo4j-threadpool-core * add TaskTimeRecordPlugin#TableSizeFor test method --- .../cn/hippo4j/common/constant/Constants.java | 2 + .../core/enable/BeforeCheckConfiguration.java | 3 ++ .../core/enable/MarkerConfiguration.java | 3 ++ .../executor/DynamicThreadPoolExecutor.java | 20 +++++++-- .../state/AbstractThreadPoolRuntime.java | 4 +- .../AbstractDynamicExecutorSupport.java | 4 +- .../DynamicThreadPoolAdapterChoose.java | 2 +- .../adpter/ThreadPoolTaskExecutorAdapter.java | 2 +- ...ansmittableThreadLocalExecutorAdapter.java | 4 +- ...ableThreadLocalExecutorServiceAdapter.java | 4 +- .../support/adpter/ZipkinExecutorAdapter.java | 6 +-- .../DynamicThreadPoolBannerHandler.java | 10 ++--- .../plugin/impl/TaskTimeRecordPlugin.java | 41 +++++++++++++------ .../ThreadPoolExecutorShutdownPlugin.java | 2 +- ...ommonDynamicThreadPoolProviderFactory.java | 23 +++++++++-- .../toolkit/ExecutorTraceContextUtil.java | 8 ++-- .../cn/hippo4j/core/toolkit/IdentifyUtil.java | 19 +++++---- .../cn/hippo4j/core/toolkit/SystemClock.java | 2 +- .../hippo4j/core/toolkit/inet/InetUtils.java | 2 +- .../plugin/impl/TaskTimeRecordPluginTest.java | 20 +++++++++ 20 files changed, 131 insertions(+), 50 deletions(-) diff --git a/infra/common/src/main/java/cn/hippo4j/common/constant/Constants.java b/infra/common/src/main/java/cn/hippo4j/common/constant/Constants.java index 80e7951d..06de3506 100644 --- a/infra/common/src/main/java/cn/hippo4j/common/constant/Constants.java +++ b/infra/common/src/main/java/cn/hippo4j/common/constant/Constants.java @@ -131,4 +131,6 @@ public class Constants { public static final String CLIENT_VERSION = "Client-Version"; public static final String CONFIGURATION_PROPERTIES_PREFIX = "spring.dynamic.thread-pool"; + + public static final long NO_REJECT_COUNT_NUM = -1L; } diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/enable/BeforeCheckConfiguration.java b/threadpool/core/src/main/java/cn/hippo4j/core/enable/BeforeCheckConfiguration.java index bbcc377d..17baabd0 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/enable/BeforeCheckConfiguration.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/enable/BeforeCheckConfiguration.java @@ -70,6 +70,9 @@ public class BeforeCheckConfiguration { return new BeforeCheckConfiguration.BeforeCheck(); } + /** + * Before check. + */ public class BeforeCheck { } diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/enable/MarkerConfiguration.java b/threadpool/core/src/main/java/cn/hippo4j/core/enable/MarkerConfiguration.java index de7c762e..f22ea7fd 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/enable/MarkerConfiguration.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/enable/MarkerConfiguration.java @@ -31,6 +31,9 @@ public class MarkerConfiguration { return new Marker(); } + /** + * Marker. + */ public class Marker { } diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/executor/DynamicThreadPoolExecutor.java b/threadpool/core/src/main/java/cn/hippo4j/core/executor/DynamicThreadPoolExecutor.java index a33c6b83..15c4f07f 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/executor/DynamicThreadPoolExecutor.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/executor/DynamicThreadPoolExecutor.java @@ -40,6 +40,8 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; +import static cn.hippo4j.common.constant.Constants.NO_REJECT_COUNT_NUM; + /** * Enhanced dynamic and monitored thread pool. */ @@ -57,7 +59,17 @@ public class DynamicThreadPoolExecutor extends ExtensibleThreadPoolExecutor impl */ @Getter @Setter - public boolean waitForTasksToCompleteOnShutdown; + private boolean waitForTasksToCompleteOnShutdown; + + /** + * The default await termination millis + */ + private static final Long DEFAULT_AWAIT_TERMINATION_MILLIS = -1L; + + /** + * The default execute timeout + */ + private static final Long DEFAULT_EXECUTE_TIMEOUT = -1L; /** * Creates a new {@code DynamicThreadPoolExecutor} with the given initial parameters. @@ -149,7 +161,7 @@ public class DynamicThreadPoolExecutor extends ExtensibleThreadPoolExecutor impl public long getAwaitTerminationMillis() { return getPluginOfType(ThreadPoolExecutorShutdownPlugin.PLUGIN_NAME, ThreadPoolExecutorShutdownPlugin.class) .map(ThreadPoolExecutorShutdownPlugin::getAwaitTerminationMillis) - .orElse(-1L); + .orElse(DEFAULT_AWAIT_TERMINATION_MILLIS); } /** @@ -176,7 +188,7 @@ public class DynamicThreadPoolExecutor extends ExtensibleThreadPoolExecutor impl public Long getRejectCountNum() { return getPluginOfType(TaskRejectCountRecordPlugin.PLUGIN_NAME, TaskRejectCountRecordPlugin.class) .map(TaskRejectCountRecordPlugin::getRejectCountNum) - .orElse(-1L); + .orElse(NO_REJECT_COUNT_NUM); } /** @@ -201,7 +213,7 @@ public class DynamicThreadPoolExecutor extends ExtensibleThreadPoolExecutor impl public Long getExecuteTimeOut() { return getPluginOfType(TaskTimeoutNotifyAlarmPlugin.PLUGIN_NAME, TaskTimeoutNotifyAlarmPlugin.class) .map(TaskTimeoutNotifyAlarmPlugin::getExecuteTimeOut) - .orElse(-1L); + .orElse(DEFAULT_EXECUTE_TIMEOUT); } /** diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/executor/state/AbstractThreadPoolRuntime.java b/threadpool/core/src/main/java/cn/hippo4j/core/executor/state/AbstractThreadPoolRuntime.java index 8d9ca68f..90b5f547 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/executor/state/AbstractThreadPoolRuntime.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/executor/state/AbstractThreadPoolRuntime.java @@ -29,6 +29,8 @@ import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; import java.util.concurrent.ThreadPoolExecutor; +import static cn.hippo4j.common.constant.Constants.NO_REJECT_COUNT_NUM; + /** * Abstract threadPool runtime info. */ @@ -66,7 +68,7 @@ public abstract class AbstractThreadPoolRuntime { int activeCount = actualExecutor.getActiveCount(); int largestPoolSize = actualExecutor.getLargestPoolSize(); BlockingQueue blockingQueue = actualExecutor.getQueue(); - long rejectCount = actualExecutor instanceof DynamicThreadPoolExecutor ? ((DynamicThreadPoolExecutor) actualExecutor).getRejectCountNum() : -1L; + long rejectCount = actualExecutor instanceof DynamicThreadPoolExecutor ? ((DynamicThreadPoolExecutor) actualExecutor).getRejectCountNum() : NO_REJECT_COUNT_NUM; ThreadPoolRunStateInfo stateInfo = ThreadPoolRunStateInfo.builder() .tpId(threadPoolId) .activeSize(activeCount) diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/AbstractDynamicExecutorSupport.java b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/AbstractDynamicExecutorSupport.java index 91de8469..b44ef7d0 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/AbstractDynamicExecutorSupport.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/AbstractDynamicExecutorSupport.java @@ -44,9 +44,9 @@ public abstract class AbstractDynamicExecutorSupport extends ThreadPoolExecutor private ExecutorService executor; - public long awaitTerminationMillis; + private long awaitTerminationMillis; - public boolean waitForTasksToCompleteOnShutdown; + private boolean waitForTasksToCompleteOnShutdown; public AbstractDynamicExecutorSupport(int corePoolSize, int maximumPoolSize, diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/DynamicThreadPoolAdapterChoose.java b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/DynamicThreadPoolAdapterChoose.java index 420fc353..528eaa5e 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/DynamicThreadPoolAdapterChoose.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/DynamicThreadPoolAdapterChoose.java @@ -33,7 +33,7 @@ import java.util.concurrent.Executor; */ public class DynamicThreadPoolAdapterChoose { - private static List DYNAMIC_THREAD_POOL_ADAPTERS = new ArrayList<>(); + private static final List DYNAMIC_THREAD_POOL_ADAPTERS = new ArrayList<>(); static { DYNAMIC_THREAD_POOL_ADAPTERS.add(new TransmittableThreadLocalExecutorAdapter()); diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/ThreadPoolTaskExecutorAdapter.java b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/ThreadPoolTaskExecutorAdapter.java index 283942db..79b6aa22 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/ThreadPoolTaskExecutorAdapter.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/ThreadPoolTaskExecutorAdapter.java @@ -46,7 +46,7 @@ public class ThreadPoolTaskExecutorAdapter implements DynamicThreadPoolAdapter { private static final String QUEUE_CAPACITY = "queueCapacity"; - private static String MATCH_CLASS_NAME = "ThreadPoolTaskExecutor"; + private static final String MATCH_CLASS_NAME = "ThreadPoolTaskExecutor"; @Override public boolean match(Object executor) { diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/TransmittableThreadLocalExecutorAdapter.java b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/TransmittableThreadLocalExecutorAdapter.java index f51c809c..b848a8ed 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/TransmittableThreadLocalExecutorAdapter.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/TransmittableThreadLocalExecutorAdapter.java @@ -28,9 +28,9 @@ import java.util.concurrent.Executor; */ public class TransmittableThreadLocalExecutorAdapter implements DynamicThreadPoolAdapter { - private static String MATCH_CLASS_NAME = "ExecutorTtlWrapper"; + private static final String MATCH_CLASS_NAME = "ExecutorTtlWrapper"; - private static String FIELD_NAME = "executor"; + private static final String FIELD_NAME = "executor"; @Override public boolean match(Object executor) { diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/TransmittableThreadLocalExecutorServiceAdapter.java b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/TransmittableThreadLocalExecutorServiceAdapter.java index 575c9725..2597a0e6 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/TransmittableThreadLocalExecutorServiceAdapter.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/TransmittableThreadLocalExecutorServiceAdapter.java @@ -28,9 +28,9 @@ import java.util.concurrent.Executor; */ public class TransmittableThreadLocalExecutorServiceAdapter implements DynamicThreadPoolAdapter { - private static String MATCH_CLASS_NAME = "ExecutorServiceTtlWrapper"; + private static final String MATCH_CLASS_NAME = "ExecutorServiceTtlWrapper"; - private static String FIELD_NAME = "executorService"; + private static final String FIELD_NAME = "executorService"; @Override public boolean match(Object executor) { diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/ZipkinExecutorAdapter.java b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/ZipkinExecutorAdapter.java index 9de29d56..12863417 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/ZipkinExecutorAdapter.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/executor/support/adpter/ZipkinExecutorAdapter.java @@ -31,9 +31,9 @@ import java.util.concurrent.Executor; */ public class ZipkinExecutorAdapter implements DynamicThreadPoolAdapter { - private final static String MATCH_CLASS_NAME = "brave.internal.WrappingExecutorService"; - private final static String FIELD_NAME = "delegate"; - private final static String TYPE_NAME = "java.util.concurrent.ExecutorService"; + private static final String MATCH_CLASS_NAME = "brave.internal.WrappingExecutorService"; + private static final String FIELD_NAME = "delegate"; + private static final String TYPE_NAME = "java.util.concurrent.ExecutorService"; @Override public boolean match(Object executor) { diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/handler/DynamicThreadPoolBannerHandler.java b/threadpool/core/src/main/java/cn/hippo4j/core/handler/DynamicThreadPoolBannerHandler.java index 0704c93e..0b026412 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/handler/DynamicThreadPoolBannerHandler.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/handler/DynamicThreadPoolBannerHandler.java @@ -34,13 +34,13 @@ public class DynamicThreadPoolBannerHandler implements InitializingBean { private final BootstrapPropertiesInterface properties; - private final String DYNAMIC_THREAD_POOL = " :: Dynamic ThreadPool :: "; + private static final String DYNAMIC_THREAD_POOL = " :: Dynamic ThreadPool :: "; - private final String HIPPO4J_GITHUB = "GitHub: https://github.com/opengoofy/hippo4j"; + private static final String HIPPO4J_GITHUB = "GitHub: https://github.com/opengoofy/hippo4j"; - private final String HIPPO4J_SITE = "Site: https://www.hippo4j.cn"; + private static final String HIPPO4J_SITE = "Site: https://www.hippo4j.cn"; - private final int STRAP_LINE_SIZE = 50; + private static final int STRAP_LINE_SIZE = 50; private final String version; @@ -70,7 +70,7 @@ public class DynamicThreadPoolBannerHandler implements InitializingBean { while (padding.length() < STRAP_LINE_SIZE - (bannerVersion.length() + DYNAMIC_THREAD_POOL.length())) { padding.append(" "); } - System.out.println(AnsiOutput.toString(banner, AnsiColor.GREEN, DYNAMIC_THREAD_POOL, AnsiColor.DEFAULT, + log.info(AnsiOutput.toString("\n", banner, AnsiColor.GREEN, DYNAMIC_THREAD_POOL, AnsiColor.DEFAULT, padding.toString(), AnsiStyle.FAINT, bannerVersion, "\n\n", HIPPO4J_GITHUB, "\n", HIPPO4J_SITE, "\n")); } diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/plugin/impl/TaskTimeRecordPlugin.java b/threadpool/core/src/main/java/cn/hippo4j/core/plugin/impl/TaskTimeRecordPlugin.java index 9753cbbd..5c47a7c7 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/plugin/impl/TaskTimeRecordPlugin.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/plugin/impl/TaskTimeRecordPlugin.java @@ -39,7 +39,14 @@ import java.util.stream.Collectors; */ public class TaskTimeRecordPlugin extends AbstractTaskTimerPlugin { - private static final int MAXIMUM_CAPACITY = 1 << 30; + /** + * maximumCapacity: 1 << 30 + */ + private static final int MAXIMUM_CAPACITY = 1073741824; + + /** + * pluginName. + */ public static final String PLUGIN_NAME = TaskTimeRecordPlugin.class.getSimpleName(); /** @@ -50,7 +57,22 @@ public class TaskTimeRecordPlugin extends AbstractTaskTimerPlugin { /** * timers */ - public final Timer[] timerTable; + private final Timer[] timerTable; + + /** + * The default time mills + */ + private static final long DEFAULT_TIME_MILLS = -1L; + + /** + * No task count + */ + private static final long NO_TASK_COUNT = -1L; + + /** + * All bits are values of 1 + */ + private static final int ALL_BIT_IS_ONE = -1; /** * Create a {@link TaskTimeRecordPlugin} @@ -116,8 +138,8 @@ public class TaskTimeRecordPlugin extends AbstractTaskTimerPlugin { // summarize data long totalTaskTimeMillis = 0L; - long maxTaskTimeMillis = -1L; - long minTaskTimeMillis = -1L; + long maxTaskTimeMillis = DEFAULT_TIME_MILLS; + long minTaskTimeMillis = DEFAULT_TIME_MILLS; long taskCount = 0L; for (Summary summary : summaries) { if (taskCount > 0) { @@ -147,13 +169,8 @@ public class TaskTimeRecordPlugin extends AbstractTaskTimerPlugin { * copy from {@link HashMap#tableSizeFor} */ static int tableSizeFor(int cap) { - int n = cap - 1; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - return n >= MAXIMUM_CAPACITY ? MAXIMUM_CAPACITY : n + 1; + int n = ALL_BIT_IS_ONE >>> Integer.numberOfLeadingZeros(cap - 1); + return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1; } /** @@ -267,7 +284,7 @@ public class TaskTimeRecordPlugin extends AbstractTaskTimerPlugin { */ public long getAvgTaskTimeMillis() { long totalTaskCount = getTaskCount(); - return totalTaskCount > 0L ? getTotalTaskTimeMillis() / totalTaskCount : -1; + return totalTaskCount > 0L ? getTotalTaskTimeMillis() / totalTaskCount : NO_TASK_COUNT; } } diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/plugin/impl/ThreadPoolExecutorShutdownPlugin.java b/threadpool/core/src/main/java/cn/hippo4j/core/plugin/impl/ThreadPoolExecutorShutdownPlugin.java index f6c5969f..beec590b 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/plugin/impl/ThreadPoolExecutorShutdownPlugin.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/plugin/impl/ThreadPoolExecutorShutdownPlugin.java @@ -51,7 +51,7 @@ public class ThreadPoolExecutorShutdownPlugin implements ShutdownAwarePlugin { * Await termination millis */ @Setter - public long awaitTerminationMillis; + private long awaitTerminationMillis; /** * Callback before pool shutdown. diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/provider/CommonDynamicThreadPoolProviderFactory.java b/threadpool/core/src/main/java/cn/hippo4j/core/provider/CommonDynamicThreadPoolProviderFactory.java index c7282947..3350544e 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/provider/CommonDynamicThreadPoolProviderFactory.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/provider/CommonDynamicThreadPoolProviderFactory.java @@ -28,6 +28,23 @@ import java.util.concurrent.TimeUnit; */ public class CommonDynamicThreadPoolProviderFactory { + /** + * Core pool size. + */ + private static final int CORE_POOL_SIZE = 2; + /** + * Maximum pool size. + */ + private static final int MAXIMUM_POOL_SIZE = 4; + /** + * Keep alive time. + */ + private static final long KEEP_ALIVE_TIME = 60L; + /** + * Work queue capacity. + */ + private static final int WORK_QUEUE_CAPACITY = 1024; + /** * Get the public dynamic thread pool instance. * @@ -38,9 +55,9 @@ public class CommonDynamicThreadPoolProviderFactory { DynamicThreadPoolExecutor dynamicThreadPoolExecutor = (DynamicThreadPoolExecutor) ThreadPoolBuilder.builder() .dynamicPool() .threadFactory(threadPoolId) - .poolThreadSize(2, 4) - .keepAliveTime(60L, TimeUnit.SECONDS) - .workQueue(BlockingQueueTypeEnum.RESIZABLE_LINKED_BLOCKING_QUEUE, 1024) + .poolThreadSize(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE) + .keepAliveTime(KEEP_ALIVE_TIME, TimeUnit.SECONDS) + .workQueue(BlockingQueueTypeEnum.RESIZABLE_LINKED_BLOCKING_QUEUE, WORK_QUEUE_CAPACITY) .build(); return dynamicThreadPoolExecutor; } diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/ExecutorTraceContextUtil.java b/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/ExecutorTraceContextUtil.java index 0a9596ce..b7da8497 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/ExecutorTraceContextUtil.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/ExecutorTraceContextUtil.java @@ -29,7 +29,7 @@ public class ExecutorTraceContextUtil { /** * Execute timeout trace key. */ - private static String EXECUTE_TIMEOUT_TRACE_KEY = EXECUTE_TIMEOUT_TRACE; + private static String executeTimeoutTraceKey = EXECUTE_TIMEOUT_TRACE; /** * Get and remove. @@ -37,8 +37,8 @@ public class ExecutorTraceContextUtil { * @return timeout trace */ public static String getAndRemoveTimeoutTrace() { - String val = MDC.get(EXECUTE_TIMEOUT_TRACE_KEY); - MDC.remove(EXECUTE_TIMEOUT_TRACE_KEY); + String val = MDC.get(executeTimeoutTraceKey); + MDC.remove(executeTimeoutTraceKey); return val; } @@ -57,6 +57,6 @@ public class ExecutorTraceContextUtil { * @param key trace key */ public static void setTimeoutTraceKey(String key) { - EXECUTE_TIMEOUT_TRACE_KEY = key; + executeTimeoutTraceKey = key; } } diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/IdentifyUtil.java b/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/IdentifyUtil.java index 00a67f26..5874f5b7 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/IdentifyUtil.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/IdentifyUtil.java @@ -45,13 +45,18 @@ public class IdentifyUtil { /** * Identify */ - private static String IDENTIFY; + private static String identify; /** * Client identification value */ public static final String CLIENT_IDENTIFICATION_VALUE = IdUtil.simpleUUID(); + /** + * Get identify sleep time + */ + private static final int SLEEP_TIME = 500; + /** * Generate identify. * @@ -60,8 +65,8 @@ public class IdentifyUtil { * @return identify */ public static synchronized String generate(ConfigurableEnvironment environment, InetUtils inetUtil) { - if (StringUtil.isNotBlank(IDENTIFY)) { - return IDENTIFY; + if (StringUtil.isNotBlank(identify)) { + return identify; } String[] customerNetwork = ServiceLoaderRegistry.getSingletonServiceInstances(ClientNetworkService.class) .stream().findFirst().map(each -> each.getNetworkIpPort(environment)).orElse(null); @@ -79,7 +84,7 @@ public class IdentifyUtil { + port + IDENTIFY_SLICER_SYMBOL + CLIENT_IDENTIFICATION_VALUE; - IDENTIFY = identify; + identify = identify; return identify; } @@ -89,16 +94,16 @@ public class IdentifyUtil { * @return identify */ public static String getIdentify() { - while (StringUtil.isBlank(IDENTIFY)) { + while (StringUtil.isBlank(identify)) { ConfigurableEnvironment environment = ApplicationContextHolder.getBean(ConfigurableEnvironment.class); InetUtils inetUtils = ApplicationContextHolder.getBean(InetUtils.class); if (environment != null && inetUtils != null) { String identify = generate(environment, inetUtils); return identify; } - ThreadUtil.sleep(500); + ThreadUtil.sleep(SLEEP_TIME); } - return IDENTIFY; + return identify; } /** diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/SystemClock.java b/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/SystemClock.java index bae6996c..550959db 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/SystemClock.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/SystemClock.java @@ -25,7 +25,7 @@ import java.util.concurrent.atomic.AtomicLong; * System clock.
* Refer to cn.hutool.core.date.SystemClock
*/ -public class SystemClock { +public final class SystemClock { /** * Period diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/inet/InetUtils.java b/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/inet/InetUtils.java index 5b933523..53a78730 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/inet/InetUtils.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/toolkit/inet/InetUtils.java @@ -168,7 +168,7 @@ public class InetUtils implements Closeable { /** * Should override the host info. */ - public boolean override; + private boolean override; private String ipAddress; diff --git a/threadpool/core/src/test/java/cn/hippo4j/core/plugin/impl/TaskTimeRecordPluginTest.java b/threadpool/core/src/test/java/cn/hippo4j/core/plugin/impl/TaskTimeRecordPluginTest.java index 88939bc1..391a1169 100644 --- a/threadpool/core/src/test/java/cn/hippo4j/core/plugin/impl/TaskTimeRecordPluginTest.java +++ b/threadpool/core/src/test/java/cn/hippo4j/core/plugin/impl/TaskTimeRecordPluginTest.java @@ -80,4 +80,24 @@ public class TaskTimeRecordPluginTest { return exceptLower < actual && actual < exceptUpper; } + @Test + public void testTableSizeFor() { + int maxCap = 1 << 30; + for (int i = 0; i <= maxCap; i++) { + int tabSize1 = tabSizeFor_JDK8(i); + int tabSize2 = TaskTimeRecordPlugin.tableSizeFor(i); + Assert.assertTrue(tabSize1 == tabSize2); + } + } + + private static int tabSizeFor_JDK8(int cap) { + int n = cap - 1; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + return (n < 0) ? 1 : (n >= 1073741824) ? 1073741824 : n + 1; + } + }