|
|
@@ -0,0 +1,46 @@
|
|
|
+package cn.tr.module.excel.core.config;
|
|
|
+
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
+
|
|
|
+import java.util.concurrent.ThreadFactory;
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @ClassName : ExcelThreadFactory
|
|
|
+ * @Description :
|
|
|
+ * @Author : LF
|
|
|
+ * @Date: 2023年03月15日
|
|
|
+ */
|
|
|
+public class ExcelThreadFactory implements ThreadFactory {
|
|
|
+ private static final AtomicInteger poolNumber = new AtomicInteger(1);
|
|
|
+ private final ThreadGroup group;
|
|
|
+ private final AtomicInteger threadNumber = new AtomicInteger(1);
|
|
|
+ private final String namePrefix;
|
|
|
+
|
|
|
+ public ExcelThreadFactory() {
|
|
|
+
|
|
|
+ SecurityManager s = System.getSecurityManager();
|
|
|
+ group = (s != null) ? s.getThreadGroup() :
|
|
|
+ Thread.currentThread().getThreadGroup();
|
|
|
+ namePrefix = "excel-export-" +
|
|
|
+ poolNumber.getAndIncrement() +
|
|
|
+ "-thread-";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Thread newThread(@NotNull Runnable r) {
|
|
|
+ Thread t = new Thread(group, r,
|
|
|
+ namePrefix + threadNumber.getAndIncrement(),
|
|
|
+ 0);
|
|
|
+ if (t.isDaemon()){
|
|
|
+ t.setDaemon(false);
|
|
|
+ }
|
|
|
+ if (t.getPriority() != Thread.NORM_PRIORITY){
|
|
|
+ t.setPriority(Thread.NORM_PRIORITY);
|
|
|
+ }
|
|
|
+ return t;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|