czh 2 vuotta sitten
vanhempi
commit
757375f965

+ 45 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/factory/AsyncFactory.java

@@ -0,0 +1,45 @@
+package com.sckw.contract.factory;
+
+import cn.hutool.core.thread.NamedThreadFactory;
+
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author czh
+ * @desc 异步工厂
+ * @date 2023/6/19
+ */
+public class AsyncFactory {
+
+    private AsyncFactory() {}
+
+    /**
+     * 全局访问点
+     */
+    public static void execute(Runnable runnable) {
+        ThreadPoolExecutorHolder.THREAD_POOL_EXECUTOR.execute(runnable);
+    }
+
+    /**
+     * 静态内部类创建实例(单例)
+     */
+    private static class ThreadPoolExecutorHolder {
+//        static final int CPU = Runtime.getRuntime().availableProcessors();
+        static final int CORE_POOL_SIZE = 10;
+        static final int MAXIMUM_POOL_SIZE = 15;
+        static final long KEEP_ALIVE_TIME = 1L;
+        static final TimeUnit TIME_UNIT = TimeUnit.SECONDS;
+        static final int MAX_QUEUE_NUM = 1024;
+
+        //static变量只会初始化一次
+        public static final ThreadPoolExecutor THREAD_POOL_EXECUTOR = new ThreadPoolExecutor(
+                CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE_TIME, TIME_UNIT,
+                new LinkedBlockingQueue<>(MAX_QUEUE_NUM),
+                new NamedThreadFactory("ThreadPoolExecutorFactory-", false),
+                new ThreadPoolExecutor.AbortPolicy());
+    }
+
+
+}