From 0b1cae75fe601bacc1b610bcd4f0c58a365e06e3 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 12 七月 2022 10:32:45 +0800 Subject: [PATCH] 动态人物管理增加自检机制。防止内存溢出 --- src/main/java/com/genersoft/iot/vmp/conf/DynamicTask.java | 23 ++++++++++++++++++----- 1 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/conf/DynamicTask.java b/src/main/java/com/genersoft/iot/vmp/conf/DynamicTask.java index ade2e62..1885632 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/DynamicTask.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/DynamicTask.java @@ -5,6 +5,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.stereotype.Component; @@ -103,12 +104,9 @@ public void stop(String key) { if (futureMap.get(key) != null && !futureMap.get(key).isCancelled()) { -// Runnable runnable = runnableMap.get(key); -// if (runnable instanceof ISubscribeTask) { -// ISubscribeTask subscribeTask = (ISubscribeTask) runnable; -// subscribeTask.stop(); -// } futureMap.get(key).cancel(false); + futureMap.remove(key); + runnableMap.remove(key); } } @@ -123,4 +121,19 @@ public Runnable get(String key) { return runnableMap.get(key); } + + /** + * 姣忎簲鍒嗛挓妫�鏌ュけ鏁堢殑浠诲姟锛屽苟绉婚櫎 + */ + @Scheduled(cron="0 0/5 * * * ?") + public void execute(){ + if (futureMap.size() > 0) { + for (String key : futureMap.keySet()) { + if (futureMap.get(key).isDone()) { + futureMap.remove(key); + runnableMap.remove(key); + } + } + } + } } -- Gitblit v1.8.0