修改BUG spring容器关闭后 遗留 magic-api 线程,导致 JVM 无法关闭

issues: https://gitee.com/ssssssss-team/magic-api/issues/I5BGZ6
This commit is contained in:
jiangqixiang
2024-05-08 17:16:54 +08:00
parent f25b35f576
commit 7b41e7998d

View File

@@ -2,8 +2,10 @@ package org.ssssssss.magicapi.task.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ExecutorConfigurationSupport;
import org.springframework.scheduling.config.CronTask;
import org.springframework.scheduling.support.CronTrigger;
import org.ssssssss.magicapi.core.config.MagicConfiguration;
@@ -16,8 +18,9 @@ import org.ssssssss.magicapi.utils.ScriptManager;
import org.ssssssss.script.MagicScriptContext;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ThreadPoolExecutor;
public class TaskMagicDynamicRegistry extends AbstractMagicDynamicRegistry<TaskInfo> {
public class TaskMagicDynamicRegistry extends AbstractMagicDynamicRegistry<TaskInfo> implements DisposableBean {
private final TaskScheduler taskScheduler;
@@ -99,4 +102,14 @@ public class TaskMagicDynamicRegistry extends AbstractMagicDynamicRegistry<TaskI
}
}
}
@Override
public void destroy() {
if (taskScheduler != null) {
if (taskScheduler instanceof ThreadPoolExecutor) {
((ThreadPoolExecutor) taskScheduler).shutdown();
}else if (taskScheduler instanceof ExecutorConfigurationSupport) {
((ExecutorConfigurationSupport) taskScheduler).shutdown();
}
}
}
}