From e59842c603ededc8a7aa67bcbda5fdf9b5924d05 Mon Sep 17 00:00:00 2001 From: yandanyang Date: Mon, 27 Sep 2021 17:32:09 +0800 Subject: [PATCH] =?UTF-8?q?reload=E5=86=8D=E6=AC=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reload/core/SmartReloadLogger.java | 12 ----- .../reload/core/SmartReloadManager.java | 41 ++++++++--------- .../core/thread/SmartReloadRunnable.java | 19 +++++--- .../core/thread/SmartReloadScheduler.java | 44 ------------------- .../core/thread/SmartReloadThreadFactory.java | 35 --------------- 5 files changed, 33 insertions(+), 118 deletions(-) delete mode 100644 admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/SmartReloadLogger.java delete mode 100644 admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadScheduler.java delete mode 100644 admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadThreadFactory.java diff --git a/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/SmartReloadLogger.java b/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/SmartReloadLogger.java deleted file mode 100644 index cb16418d..00000000 --- a/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/SmartReloadLogger.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.lab1024.smartadmin.service.module.support.reload.core; - -/** - * SmartReloadThreadLogger 日志类 - */ -public interface SmartReloadLogger { - - void error(String string); - - void error(String string, Throwable e); - -} diff --git a/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/SmartReloadManager.java b/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/SmartReloadManager.java index abbbea5d..0902eb1c 100644 --- a/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/SmartReloadManager.java +++ b/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/SmartReloadManager.java @@ -1,9 +1,10 @@ package net.lab1024.smartadmin.service.module.support.reload.core; +import lombok.extern.slf4j.Slf4j; import net.lab1024.smartadmin.service.module.support.reload.core.anno.SmartReload; import net.lab1024.smartadmin.service.module.support.reload.core.domain.ReloadObject; -import net.lab1024.smartadmin.service.module.support.reload.core.thread.SmartReloadScheduler; +import net.lab1024.smartadmin.service.module.support.reload.core.thread.SmartReloadRunnable; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.util.ReflectionUtils; @@ -11,6 +12,8 @@ import org.springframework.util.ReflectionUtils; import java.lang.reflect.Method; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.TimeUnit; /** * SmartReloadManager 管理器 @@ -19,28 +22,25 @@ import java.util.concurrent.ConcurrentHashMap; * * @author zhuoda */ +@Slf4j public class SmartReloadManager implements BeanPostProcessor { + private static final String THREAD_NAME_PREFIX = "smart-admin-reload"; + private static final int THREAD_COUNT = 1; + private Map reloadObjectMap = new ConcurrentHashMap<>(); - private SmartReloadScheduler reloadScheduler; + private ScheduledThreadPoolExecutor threadPoolExecutor; - private SmartReloadLogger logger; - - - public SmartReloadManager(SmartReloadLogger logger, - AbstractSmartReloadCommand reloadCommand, - int threadCount) { - - if (logger == null) { - throw new ExceptionInInitializerError("SmartReloadLoggerImp cannot be null"); - } - if (threadCount < 1) { - throw new ExceptionInInitializerError("threadCount must be greater than 1"); - } - this.logger = logger; - this.reloadScheduler = new SmartReloadScheduler(this.logger, threadCount); - this.reloadScheduler.addCommand(reloadCommand); + public SmartReloadManager(AbstractSmartReloadCommand reloadCommand) { + this.threadPoolExecutor = new ScheduledThreadPoolExecutor(THREAD_COUNT, r -> { + Thread t = new Thread(r, THREAD_NAME_PREFIX); + if (!t.isDaemon()) { + t.setDaemon(true); + } + return t; + }); + this.threadPoolExecutor.scheduleWithFixedDelay(new SmartReloadRunnable(reloadCommand), 10, 20, TimeUnit.SECONDS); reloadCommand.setReloadManager(this); } @@ -58,7 +58,7 @@ public class SmartReloadManager implements BeanPostProcessor { } int paramCount = method.getParameterCount(); if (paramCount > 1) { - logger.error("<> register tag reload : " + smartReload.value() + " , param count cannot greater than one !"); + log.error("<> register tag reload : " + smartReload.value() + " , param count cannot greater than one !"); continue; } String reloadTag = smartReload.value(); @@ -75,13 +75,14 @@ public class SmartReloadManager implements BeanPostProcessor { */ private void register(String tag, ReloadObject reloadObject) { if (reloadObjectMap.containsKey(tag)) { - logger.error("<> register duplicated tag reload : " + tag + " , and it will be cover!"); + log.error("<> register duplicated tag reload : " + tag + " , and it will be cover!"); } reloadObjectMap.put(tag, reloadObject); } /** * 获取重载对象 + * * @return */ public Map reloadObjectMap() { diff --git a/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadRunnable.java b/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadRunnable.java index 623dfbdc..fd02d6a2 100644 --- a/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadRunnable.java +++ b/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadRunnable.java @@ -1,7 +1,7 @@ package net.lab1024.smartadmin.service.module.support.reload.core.thread; +import lombok.extern.slf4j.Slf4j; import net.lab1024.smartadmin.service.module.support.reload.core.AbstractSmartReloadCommand; -import net.lab1024.smartadmin.service.module.support.reload.core.SmartReloadLogger; import net.lab1024.smartadmin.service.module.support.reload.core.domain.ReloadItem; import net.lab1024.smartadmin.service.module.support.reload.core.domain.ReloadObject; import net.lab1024.smartadmin.service.module.support.reload.core.domain.SmartReloadResult; @@ -12,16 +12,20 @@ import java.lang.reflect.Method; import java.util.List; import java.util.concurrent.ConcurrentHashMap; - +/** + * + * [ reload thread ] + * + * @author + * @date + */ +@Slf4j public class SmartReloadRunnable implements Runnable { private AbstractSmartReloadCommand abstractSmartReloadCommand; - private SmartReloadLogger logger; - - public SmartReloadRunnable(AbstractSmartReloadCommand abstractSmartReloadCommand, SmartReloadLogger logger) { + public SmartReloadRunnable(AbstractSmartReloadCommand abstractSmartReloadCommand) { this.abstractSmartReloadCommand = abstractSmartReloadCommand; - this.logger = logger; } @Override @@ -29,7 +33,7 @@ public class SmartReloadRunnable implements Runnable { try { this.doTask(); } catch (Throwable e) { - logger.error("", e); + log.error("", e); } } @@ -55,6 +59,7 @@ public class SmartReloadRunnable implements Runnable { /** * 方法调用 + * * @param reloadItem * @return */ diff --git a/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadScheduler.java b/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadScheduler.java deleted file mode 100644 index facb6219..00000000 --- a/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadScheduler.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.lab1024.smartadmin.service.module.support.reload.core.thread; - -import net.lab1024.smartadmin.service.module.support.reload.core.AbstractSmartReloadCommand; -import net.lab1024.smartadmin.service.module.support.reload.core.SmartReloadLogger; - -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -/** - * Reload 调度器 - * - * @author zhuoda - */ -public class SmartReloadScheduler { - - private ScheduledThreadPoolExecutor executor; - - private SmartReloadLogger logger; - - - public SmartReloadScheduler(SmartReloadLogger logger, int threadCount) { - this.executor = new ScheduledThreadPoolExecutor(threadCount, new SmartReloadThreadFactory()); - this.logger = logger; - } - - - public void shutdown() { - try { - executor.shutdown(); - } catch (Throwable e) { - logger.error("<> shutdown ", e); - } - } - - public void addCommand(AbstractSmartReloadCommand command, long initialDelay, long delay, TimeUnit unit) { - executor.scheduleWithFixedDelay(new SmartReloadRunnable(command, this.logger), initialDelay, delay, unit); - } - - public void addCommand(AbstractSmartReloadCommand command) { - executor.scheduleWithFixedDelay(new SmartReloadRunnable(command, this.logger), 10, 20, TimeUnit.SECONDS); - } - - -} diff --git a/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadThreadFactory.java b/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadThreadFactory.java deleted file mode 100644 index 7a1d00db..00000000 --- a/admin-api/java-api/src/main/java/net/lab1024/smartadmin/service/module/support/reload/core/thread/SmartReloadThreadFactory.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.lab1024.smartadmin.service.module.support.reload.core.thread; - -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.atomic.AtomicInteger; - -public class SmartReloadThreadFactory implements ThreadFactory { - - private static final AtomicInteger poolNumber = new AtomicInteger(1); - - private final ThreadGroup group; - - private final AtomicInteger threadNumber = new AtomicInteger(1); - - private final String namePrefix; - - SmartReloadThreadFactory() { - SecurityManager s = System.getSecurityManager(); - group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup(); - namePrefix = "smart-reload-" + poolNumber.getAndIncrement() + "-thread-"; - } - - @Override - public Thread newThread(Runnable r) { - Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0); - if (t.isDaemon()) { - t.setDaemon(false); - } - - if (t.getPriority() != Thread.NORM_PRIORITY) { - t.setPriority(Thread.NORM_PRIORITY); - } - - return t; - } -}