|
@@ -0,0 +1,59 @@
|
|
|
+package com.xxl.job.admin.core.thread;
|
|
|
+
|
|
|
+import com.xxl.job.admin.core.trigger.XxlJobTrigger;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+
|
|
|
+import java.util.concurrent.LinkedBlockingQueue;
|
|
|
+import java.util.concurrent.ThreadPoolExecutor;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+
|
|
|
+/**
|
|
|
+ * job trigger thread pool helper
|
|
|
+ *
|
|
|
+ * @author xuxueli 2018-07-03 21:08:07
|
|
|
+ */
|
|
|
+public class JobTriggerPoolHelper {
|
|
|
+ private static Logger logger = LoggerFactory.getLogger(JobTriggerPoolHelper.class);
|
|
|
+
|
|
|
+
|
|
|
+ // ---------------------- trigger pool ----------------------
|
|
|
+
|
|
|
+ private ThreadPoolExecutor triggerPool = new ThreadPoolExecutor(
|
|
|
+ 50,
|
|
|
+ 500,
|
|
|
+ 60L,
|
|
|
+ TimeUnit.SECONDS,
|
|
|
+ new LinkedBlockingQueue<Runnable>(100000),
|
|
|
+ new ThreadPoolExecutor.CallerRunsPolicy());
|
|
|
+
|
|
|
+
|
|
|
+ public void addTrigger(final int jobId){
|
|
|
+ triggerPool.execute(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ XxlJobTrigger.trigger(jobId);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ public void stop(){
|
|
|
+ //triggerPool.shutdown();
|
|
|
+ triggerPool.shutdownNow();
|
|
|
+ logger.info(">>>>>>>>> xxl-job trigger thread pool shutdown success.");
|
|
|
+ }
|
|
|
+
|
|
|
+ // ---------------------- helper ----------------------
|
|
|
+
|
|
|
+ private static JobTriggerPoolHelper helper = new JobTriggerPoolHelper();
|
|
|
+
|
|
|
+
|
|
|
+ public static void trigger(int jobId) {
|
|
|
+ helper.addTrigger(jobId);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void toStop(){
|
|
|
+ helper.stop();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|