wangliang преди 4 години
родител
ревизия
24f23ed9cc

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/OrgCenterDataDisposeService.java

@@ -11,6 +11,6 @@ import java.io.IOException;
  */
 public interface OrgCenterDataDisposeService {
 
-    @Async
+    @Async("arbitrateThreadPool")
     void updateSchoolInfo() throws IOException;
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TBTaskService.java

@@ -144,6 +144,6 @@ public interface TBTaskService extends IService<TBTask> {
     /**
      * 更新任务状态
      */
-    @Async
+    @Async("arbitrateThreadPool")
     public void updateStatus();
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/create/AsyncCreateTaskTemplete.java

@@ -30,7 +30,7 @@ public abstract class AsyncCreateTaskTemplete extends AsyncImportTaskTemplete {
      * @return
      * @throws IOException
      */
-    @Async
+    @Async("arbitrateThreadPool")
     public Result createPdf(Map<String, Object> map, CallbackCreatePdf callbackCreatePdf) throws IOException {
         return null;
     }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/export/AsyncExportTaskTemplete.java

@@ -51,7 +51,7 @@ public abstract class AsyncExportTaskTemplete {
      * @param map
      * @return
      */
-    @Async
+    @Async("arbitrateThreadPool")
     public abstract Result exportTask(Map<String, Object> map) throws Exception;
 
     /**

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/importData/AsyncImportTaskTemplete.java

@@ -54,7 +54,7 @@ public abstract class AsyncImportTaskTemplete {
      * @return
      * @throws IOException
      */
-    @Async
+    @Async("arbitrateThreadPool")
     public abstract Result importTask(Map<String, Object> map) throws IOException, Exception;
 
     /**

+ 52 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/threadPool/MyThreadPool.java

@@ -0,0 +1,52 @@
+package com.qmth.distributed.print.business.threadPool;//package com.qmth.themis.business.threadPool;
+
+import com.qmth.distributed.print.common.contant.SystemConstant;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import javax.annotation.PostConstruct;
+import java.util.Objects;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+/**
+ * @Description: 线程池应用配置
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2019/3/21
+ */
+@Configuration
+public class MyThreadPool extends ThreadPoolTaskExecutor {
+
+    public MyThreadPool arbitratePoolTaskExecutor = null;
+
+    @PostConstruct
+    public void init() {
+        arbitrateThreadPool();
+    }
+
+    /**
+     * 仲裁线程池
+     *
+     * @return
+     */
+    @Bean
+    public Executor arbitrateThreadPool() {
+        if (Objects.isNull(arbitratePoolTaskExecutor)) {
+            arbitratePoolTaskExecutor = new MyThreadPool();
+            arbitratePoolTaskExecutor.setCorePoolSize(SystemConstant.THREAD_POOL_CORE_POOL_SIZE);//核心线程数
+            arbitratePoolTaskExecutor.setMaxPoolSize(SystemConstant.THREAD_POOL_MAX_POOL_SIZE);//最大线程数
+            arbitratePoolTaskExecutor.setKeepAliveSeconds(SystemConstant.THREAD_POOL_KEEP_ALIVE_SECONDS);//线程空闲时间
+            arbitratePoolTaskExecutor.setQueueCapacity(SystemConstant.THREAD_POOL_QUEUE_CAPACITY);//队列容量
+            arbitratePoolTaskExecutor.setThreadNamePrefix(SystemConstant.THREAD_POOL_NAME);
+
+            // rejection-policy:当pool已经达到max size的时候,如何处理新任务
+            // CALLER_RUNS:不在新线程中执行任务,而是由调用者所在的线程来执行
+            arbitratePoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+            arbitratePoolTaskExecutor.initialize();
+        }
+        return arbitratePoolTaskExecutor;
+    }
+}

+ 9 - 0
distributed-print-common/src/main/java/com/qmth/distributed/print/common/contant/SystemConstant.java

@@ -121,6 +121,15 @@ public class SystemConstant {
     public static String XLSX = "xlsx";
     public static String XLS = "xls";
 
+    /**
+     * 线程池配置
+     */
+    public static final String THREAD_POOL_NAME = "arbitrateThreadPool";
+    public static final int THREAD_POOL_CORE_POOL_SIZE = 10;
+    public static final int THREAD_POOL_MAX_POOL_SIZE = 40;
+    public static final int THREAD_POOL_KEEP_ALIVE_SECONDS = 60;
+    public static final int THREAD_POOL_QUEUE_CAPACITY = 500;
+
     /**
      * 初始化附件文件路径
      */