import java.util.concurrent.*; /** * 实现内存线程池服务 * @author chenshiyan * */ public class AstraeaThreadPoolUtils{ /** * 使用内存队列线程池 */ private static ThreadPoolExecutor threadPool; /** * 使用内存队列线程池-附件上传专用 */ private static ThreadPoolExecutor attachmentThreadPool; /** * 线程池队列最大大小 */ private static int threadPoolQueueMaxSize = 1000; /** * 内存队列 */ private static ArrayBlockingQueue<Runnable> queue; static{ queue = new ArrayBlockingQueue<>(threadPoolQueueMaxSize); //初始化线程池 threadPool = new ThreadPoolExecutor(Runtime.getRuntime() .availableProcessors(), Runtime.getRuntime() .availableProcessors() * 2 + 1, 5L, TimeUnit.MINUTES, queue,new ThreadPoolExecutor.AbortPolicy()); //初始化附件上传线程池 attachmentThreadPool = new ThreadPoolExecutor(Runtime.getRuntime() .availableProcessors(), Runtime.getRuntime() .availableProcessors() * 2 + 1, 5L, TimeUnit.MINUTES, queue,new ThreadPoolExecutor.AbortPolicy()); } /** * 添加任务 * @param task */ public static void addTask(Runnable task){ threadPool.execute(task); } /** * 添加附件上传任务 * @param task */ public static void addAttachmentTask(Runnable task){ attachmentThreadPool.execute(task); } /** * 获取池大小 * @return */ public static int getPoolSize(){ return threadPool.getMaximumPoolSize(); } /** * 添加带有返回值的任务 * @param task * @return */ public static <T> Future addCallableTask(Callable<T> task){ return threadPool.submit(task); } }
实现内存线程池服务
最新推荐文章于 2024-08-06 10:22:43 发布