package com.osdiot.cissync.util;
import java.util.concurrent.*;
/**
* 线程池工具类
*
* @Author: Mr.LB
* @Date: 2021-03-17 11:36
* @Description: ThreadPoolUtils
* 【手动创建线程池,规避资源耗尽的风险】
* 说明:Executors返回的线程池弊端如下:
* 1、FixedThreadPool 和 SingleThreadPool 允许的请求队列长度为 Integer.MAX_VALUE, 可能会堆积大量的请求, 从而导致OOM
* 2、CachedThreadPool 和 ScheduledThreadPool 允许的创建线程数量为 Integer.MAX_VALUE, 可能会创建大量的线程, 从而导致OOM
**/
public class ThreadPoolUtils {
private static ExecutorService executorService;
/**
* @author Mr.LB
* @date 2020/10/28 9:04
* @description: 获取线程池实例
**/
private static ExecutorService build() {
/**
* isShutdown() 和 isTerminated() 的区别:
* 线程池调用了shutdown()后,isShutdown()返回的就是true,
* isTerminated()需要等待所有任务执行完毕才返回true,否则返回的是false
**/
if (null == executorService || executorService.isShutdown() || executorService.isTerminated()) {
executorService = new ThreadPoolExecutor(50, 100, 30L,
TimeUnit.SECONDS, new ArrayBlockingQueue<>(256));
}
return executorService;
}
public static void execute(Runnable command) {
build().execute(command);
}
public static <T> Future<T> submit(Callable<T> callable) {
return build().submit(callable);
}
}
努力加载评论中...
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步