mirror of
https://github.com/LamGC/Oracle-Sentry.git
synced 2025-04-29 22:27:34 +00:00
perf: 调整线程池参数和作用域.
调整线程池为静态, 以为所有 Trigger 实例提供, 消除线程池重复创建导致的线程过剩情况, 将线程数设为核心数量.
This commit is contained in:
parent
da86b0f9bc
commit
33967c675b
@ -1,6 +1,8 @@
|
||||
package net.lamgc.oracle.sentry.script.groovy.trigger;
|
||||
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
@ -12,13 +14,16 @@ import java.util.concurrent.Executors;
|
||||
@TriggerName("once")
|
||||
public class OnceTrigger implements GroovyTrigger {
|
||||
|
||||
private final static ExecutorService executor = Executors.newFixedThreadPool(4,
|
||||
private final static Logger log = LoggerFactory.getLogger(OnceTrigger.class);
|
||||
private final static ExecutorService EXECUTOR = Executors.newFixedThreadPool(
|
||||
Runtime.getRuntime().availableProcessors(),
|
||||
new ThreadFactoryBuilder()
|
||||
.setNameFormat("GroovyOnceExec-%d")
|
||||
.setUncaughtExceptionHandler((t, e) -> log.error("脚本执行时发生未捕获异常.", e))
|
||||
.build());
|
||||
|
||||
@Override
|
||||
public void run(Runnable task) {
|
||||
executor.execute(task);
|
||||
EXECUTOR.execute(task);
|
||||
}
|
||||
}
|
||||
|
@ -3,20 +3,24 @@ package net.lamgc.oracle.sentry.script.groovy.trigger;
|
||||
import com.google.common.base.Throwables;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.scheduling.TaskScheduler;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||
import org.springframework.scheduling.support.CronTrigger;
|
||||
|
||||
/**
|
||||
* @author LamGC
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
@TriggerName("timer")
|
||||
public class TimerTrigger implements GroovyTrigger {
|
||||
|
||||
private final static Logger log = LoggerFactory.getLogger(TimerTrigger.class);
|
||||
|
||||
private CronTrigger trigger;
|
||||
private final TaskScheduler scheduler = new ThreadPoolTaskScheduler();
|
||||
private final static ThreadPoolTaskScheduler SCHEDULER = new ThreadPoolTaskScheduler();
|
||||
static {
|
||||
SCHEDULER.setPoolSize(Runtime.getRuntime().availableProcessors());
|
||||
SCHEDULER.setErrorHandler(t -> log.error("脚本执行时发生异常.", t));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设定定时时间.
|
||||
@ -49,7 +53,7 @@ public class TimerTrigger implements GroovyTrigger {
|
||||
return;
|
||||
}
|
||||
|
||||
scheduler.schedule(runnable, trigger);
|
||||
SCHEDULER.schedule(runnable, trigger);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user