content: package com.cn.xmf.job.admin.core.thread;
  
  import com.cn.xmf.job.admin.core.trigger.TriggerTypeEnum;
  import com.cn.xmf.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(
              32,
              256,
              60L,
              TimeUnit.SECONDS,
              new LinkedBlockingQueue<Runnable>(1000));
  
  
      public void addTrigger(final int jobId, final TriggerTypeEnum triggerType, final int failRetryCount, final String executorShardingParam, final String executorParam) {
          triggerPool.execute(new Runnable() {
              @Override
              public void run() {
                  XxlJobTrigger.trigger(jobId, triggerType, failRetryCount, executorShardingParam, executorParam);
              }
          });
      }
  
      public void stop() {
          //triggerPool.shutdown();
          triggerPool.shutdownNow();
          logger.info(">>>>>>>>> xxl-job trigger thread pool shutdown success.");
      }
  
      // ---------------------- helper ----------------------
  
      private static JobTriggerPoolHelper helper = new JobTriggerPoolHelper();
  
      /**
       * @param jobId
       * @param triggerType
       * @param failRetryCount
       * 			>=0: use this param
       * 			<0: use param from job info config
       * @param executorShardingParam
       * @param executorParam
       *          null: use job param
       *          not null: cover job param
       */
      public static void trigger(int jobId, TriggerTypeEnum triggerType, int failRetryCount, String executorShardingParam, String executorParam) {
          helper.addTrigger(jobId, triggerType, failRetryCount, executorShardingParam, executorParam);
      }
  
      public static void toStop() {
          helper.stop();
      }
  
  }
  