修改申请

This commit is contained in:
18792927508
2023-11-22 13:58:34 +08:00
parent f85edb62f4
commit 11aab5bc31
26 changed files with 2470 additions and 166 deletions
@@ -0,0 +1,112 @@
package com.ruoyi.common.utils.thread;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
/**
* @description 线程池工具类
* @Author wangqiong
* @Date 2023/11/7 15:41
* @Version V1.0
**/
@Slf4j
public class ThreadPoolUtil {
/** cpu核心数 */
private static int corePoolSize = (Runtime.getRuntime().availableProcessors());
/**创建固定大小线程池*/
private static ExecutorService executors = new ThreadPoolExecutor(
corePoolSize,
corePoolSize,
0L,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>());
/**
* 异步任务
* @param task
*/
public static void execute(Runnable task){
executors.execute(task);
}
/**
* 可获取返回结果的任务且可设置超时时间
* @param task
* @param timeout
* @param <T>
* @return
*/
public static <T> T execute(Callable<T> task, long timeout){
Future<T> future = executors.submit(task);
T result = null;
try {
result = future.get(timeout, TimeUnit.SECONDS);
} catch (InterruptedException e) {
future.cancel(true);
log.error("ThreadPoolUtil.InterruptedException. e:{}", e);
} catch (ExecutionException e) {
future.cancel(true);
log.error("ThreadPoolUtil.ExecutionException. e:{}", e);
} catch (TimeoutException e) {
future.cancel(true);
log.error("ThreadPoolUtil.TimeoutException. e:{}", e);
}
return result;
}
/**
* 可获取返回结果的任务
* @param task
* @return
*/
public static <T> Future<T> submit(Callable<T> task){
return executors.submit(task);
}
/**
* 可获取返回结果的任务
* @param tasks
* @param <T>
* @return
*/
public static <T> List<T> submit(Callable<T>... tasks){
List<Future<T>> list=new ArrayList<>();
List<T> resultList=new ArrayList<>();
if(tasks==null||tasks.length==0){
return resultList;
}
for(Callable<T> task:tasks){
list.add(executors.submit(task));
}
for(Future<T> future:list){
try {
resultList.add(future.get());
} catch (InterruptedException e) {
future.cancel(true);
log.error("ThreadPoolUtil.InterruptedException. e:{}", e);
} catch (ExecutionException e) {
future.cancel(true);
log.error("ThreadPoolUtil.ExecutionException. e:{}", e);
}
}
return resultList;
}
/**
* 执行完所有返回
* @param tasks
*/
public static void submit(Runnable ...tasks){
if(tasks==null||tasks.length==0){
return;
}
List<CompletableFuture> futureList=new ArrayList<>();
for (Runnable task : tasks) {
futureList.add(CompletableFuture.runAsync(task,executors));
}
CompletableFuture.allOf(futureList.toArray(new CompletableFuture[futureList.size()])).join();
}
}