一种基于单例模式的任务线程池工具类
3 import java.util.concurrent.Callable; 4 import java.util.concurrent.Executors; 5 import java.util.concurrent.Future; 6 import java.util.concurrent.ThreadPoolExecutor; 7 8 import lombok.extern.slf4j.Slf4j; 9 10 /** 11 * task线程池的工具类(单例)13 * 14 * 2020年02月26日 15 * @param 16 */ 17 @Slf4j 18 public class ThreadPoolManager { 19 21 22 private static final int THREAD_POOL_SIZE = 8; 23 24 /** 25 * 非核心线程闲置时超时1s 26 */ 27 private static final int KEEP_ALIVE = 1; 28 29 private static ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(THREAD_POOL_SIZE); 30 31 private ThreadPoolManager() { 32 } 33 34 private static class SingletonInner { 35 private static ThreadPoolManager instance = new ThreadPoolManager(); 36 } 37 38 public static ThreadPoolManager getInstance() { 39 return SingletonInner.instance; 40 } 41 42 /** 43 * 开启一个无返回结果的线程 44 * @param r 45 */ 46 public void execute(Runnable runnable) { 47 log.info("start a thread ->" + Thread.currentThread().getName()); 48 // 把一个任务丢到了线程池中 49 executor.execute(runnable); 50 } 51 52 /** 53 * 开启一个有返回结果的线程 54 * @param runnable 55 * @return 56 */ 57 public <T> Future<T> submit(Callable<T> runnable) { 58 // 把一个任务丢到了线程池中 59 return executor.submit(runnable); 60 } 61 62 /** 63 * 把任务移除等待队列 64 * @param runnable 65 */ 66 public void cancel(Runnable runnable) { 67 if (runnable != null) { 68 executor.getQueue().remove(runnable); 69 } 70 } 71 72 /** 73 * 获取空闲线程数 74 * @return 75 */ 76 public static int getFreeThreadNum() { 77 int freeNum = executor.getCorePoolSize() -executor.getActiveCount(); 78 return freeNum; 79 } 80 81 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix