diff --git a/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/OnceTrigger.java b/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/OnceTrigger.java index 0a2b1f7..1971265 100644 --- a/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/OnceTrigger.java +++ b/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/OnceTrigger.java @@ -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); } } diff --git a/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/TimerTrigger.java b/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/TimerTrigger.java index edffa07..41f5502 100644 --- a/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/TimerTrigger.java +++ b/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/TimerTrigger.java @@ -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); } }