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);
}
}
随笔- 11
文章- 0
评论- 0
阅读-
823
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix