package com.qianwen.smartman.modules.report.utils; import cn.hutool.log.StaticLog; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Callable; import java.util.concurrent.Future; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import org.springframework.scheduling.concurrent.CustomizableThreadFactory; /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/report/utils/ThreadPoolUtil.class */ public class ThreadPoolUtil { private static final int CORE_POOL_SIZE = 10; private static final int MAX_POOL_SIZE = 20; private static final int QUEUE_CAPACITY = 30; private static final long KEEP_ALIVE_TIME = 1; private static ThreadPoolExecutor executor; private ThreadPoolUtil() { } public static ThreadPoolExecutor getThreadPool() { if (Objects.isNull(executor)) { executor = new ThreadPoolExecutor(CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS, new ArrayBlockingQueue(QUEUE_CAPACITY), new CustomizableThreadFactory("p-thread-exec-"), new ThreadPoolExecutor.CallerRunsPolicy()); return executor; } return executor; } public static List createTaskList(List>> tasks) { List result = new ArrayList<>(); List>> futureList = new ArrayList<>(); tasks.forEach(task -> { futureList.add(getThreadPool().submit(task)); }); StaticLog.info("[线程池开始执行任务].[start taskSize={}]", new Object[]{Integer.valueOf(tasks.size())}); futureList.forEach(future -> { while (true) { if (future.isDone() && !future.isCancelled()) { try { result.addAll((Collection) future.get()); return; } catch (Exception e) { StaticLog.error("任务{}执行失败,失败信息:{}", new Object[]{future, e.getMessage()}); return; } } } }); return result; } }