Browse Source

调整解析线程池关闭处理.

nieqiurong 3 tháng trước cách đây
mục cha
commit
15685ad653

+ 15 - 0
mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser-4.9/src/main/java/com/baomidou/mybatisplus/extension/parser/JsqlParserGlobal.java

@@ -79,7 +79,9 @@ public class JsqlParserGlobal {
      * @param executorService 线程池 (自行控制线程池关闭)
      * @param addShutdownHook 是否注册退出关闭钩子
      * @since 3.5.11
+     * @deprecated 3.5.12 推荐使用 {@link #setExecutorService(ExecutorService, Thread)}
      */
+    @Deprecated
     public static void setExecutorService(ExecutorService executorService, boolean addShutdownHook) {
         JsqlParserGlobal.executorService = executorService;
         if (addShutdownHook) {
@@ -87,6 +89,19 @@ public class JsqlParserGlobal {
         }
     }
 
+    /**
+     * 设置解析线程池
+     * @param executorService 线程池 (自行控制线程池关闭)
+     * @param shutdownHook 关闭钩子
+     * @since 3.5.12
+     */
+    public static void setExecutorService(ExecutorService executorService, Thread shutdownHook) {
+        JsqlParserGlobal.executorService = executorService;
+        if (shutdownHook != null) {
+            Runtime.getRuntime().addShutdownHook(shutdownHook);
+        }
+    }
+
     /**
      * 获取解析线程池(如果未自定义则返回默认的解析线程池)
      *

+ 14 - 0
mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser-5.0/src/main/java/com/baomidou/mybatisplus/extension/parser/JsqlParserGlobal.java

@@ -79,7 +79,9 @@ public class JsqlParserGlobal {
      * @param executorService 线程池 (自行控制线程池关闭)
      * @param addShutdownHook 是否注册退出关闭钩子
      * @since 3.5.11
+     * @deprecated 3.5.12 推荐使用 {@link #setExecutorService(ExecutorService, Thread)}
      */
+    @Deprecated
     public static void setExecutorService(ExecutorService executorService, boolean addShutdownHook) {
         JsqlParserGlobal.executorService = executorService;
         if (addShutdownHook) {
@@ -87,6 +89,18 @@ public class JsqlParserGlobal {
         }
     }
 
+    /**
+     * 设置解析线程池
+     * @param executorService 线程池 (自行控制线程池关闭)
+     * @param shutdownHook 关闭钩子
+     * @since 3.5.12
+     */
+    public static void setExecutorService(ExecutorService executorService, Thread shutdownHook) {
+        JsqlParserGlobal.executorService = executorService;
+        if (shutdownHook != null) {
+            Runtime.getRuntime().addShutdownHook(shutdownHook);
+        }
+    }
     /**
      * 获取解析线程池(如果未自定义则返回默认的解析线程池)
      *

+ 2 - 4
mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser-common/src/main/java/com/baomidou/mybatisplus/jsqlparser/JsqlParserThreadPool.java

@@ -47,7 +47,9 @@ public class JsqlParserThreadPool {
      * 注册Jvm退出钩子
      *
      * @param executorService 线程池
+     * @deprecated 3.5.12
      */
+    @Deprecated
     public static void addShutdownHook(ExecutorService executorService) {
         Runtime.getRuntime().addShutdownHook(new Thread(() -> {
             if (!executorService.isShutdown()) {
@@ -67,10 +69,6 @@ public class JsqlParserThreadPool {
             return thread;
         });
 
-        static {
-            addShutdownHook(executorService);
-        }
-
         /**
          * 默认解析线程池(固定大小,默认大小{@link #DEFAULT_THREAD_SIZE})
          *

+ 15 - 0
mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser/src/main/java/com/baomidou/mybatisplus/extension/parser/JsqlParserGlobal.java

@@ -79,7 +79,9 @@ public class JsqlParserGlobal {
      * @param executorService 线程池 (自行控制线程池关闭)
      * @param addShutdownHook 是否注册退出关闭钩子
      * @since 3.5.11
+     * @deprecated 3.5.12 推荐使用 {@link #setExecutorService(ExecutorService, Thread)}
      */
+    @Deprecated
     public static void setExecutorService(ExecutorService executorService, boolean addShutdownHook) {
         JsqlParserGlobal.executorService = executorService;
         if (addShutdownHook) {
@@ -87,6 +89,19 @@ public class JsqlParserGlobal {
         }
     }
 
+    /**
+     * 设置解析线程池
+     * @param executorService 线程池 (自行控制线程池关闭)
+     * @param shutdownHook 关闭钩子
+     * @since 3.5.12
+     */
+    public static void setExecutorService(ExecutorService executorService, Thread shutdownHook) {
+        JsqlParserGlobal.executorService = executorService;
+        if (shutdownHook != null) {
+            Runtime.getRuntime().addShutdownHook(shutdownHook);
+        }
+    }
+
     /**
      * 获取解析线程池(如果未自定义则返回默认的解析线程池)
      *