mirror of
https://github.com/LamGC/Oracle-Sentry.git
synced 2025-04-30 06:37:42 +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;
|
package net.lamgc.oracle.sentry.script.groovy.trigger;
|
||||||
|
|
||||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
@ -12,13 +14,16 @@ import java.util.concurrent.Executors;
|
|||||||
@TriggerName("once")
|
@TriggerName("once")
|
||||||
public class OnceTrigger implements GroovyTrigger {
|
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()
|
new ThreadFactoryBuilder()
|
||||||
.setNameFormat("GroovyOnceExec-%d")
|
.setNameFormat("GroovyOnceExec-%d")
|
||||||
|
.setUncaughtExceptionHandler((t, e) -> log.error("脚本执行时发生未捕获异常.", e))
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(Runnable task) {
|
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 com.google.common.base.Throwables;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.scheduling.TaskScheduler;
|
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||||
import org.springframework.scheduling.support.CronTrigger;
|
import org.springframework.scheduling.support.CronTrigger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author LamGC
|
* @author LamGC
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unused")
|
||||||
@TriggerName("timer")
|
@TriggerName("timer")
|
||||||
public class TimerTrigger implements GroovyTrigger {
|
public class TimerTrigger implements GroovyTrigger {
|
||||||
|
|
||||||
private final static Logger log = LoggerFactory.getLogger(TimerTrigger.class);
|
private final static Logger log = LoggerFactory.getLogger(TimerTrigger.class);
|
||||||
|
|
||||||
private CronTrigger trigger;
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
scheduler.schedule(runnable, trigger);
|
SCHEDULER.schedule(runnable, trigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user