package cn.cetc54.platform.core.common.utils; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * @author */ public class ThreadPoolUtil { /** * 线程缓冲队列 */ private static BlockingQueue bqueue = new ArrayBlockingQueue(100); /** * 核心线程数,会一直存活,即使没有任务,线程池也会维护线程的最少数量 */ private static final int SIZE_CORE_POOL = 5; /** * 线程池维护线程的最大数量 */ private static final int SIZE_MAX_POOL = 10; /** * 当前线程数超过核心线程数时,空闲线程存活时间 */ private static final long ALIVE_TIME = 2000; private static ThreadPoolExecutor pool = new ThreadPoolExecutor(SIZE_CORE_POOL, SIZE_MAX_POOL, ALIVE_TIME, TimeUnit.MILLISECONDS, bqueue, new ThreadPoolExecutor.CallerRunsPolicy()); static { pool.prestartAllCoreThreads(); } public static ThreadPoolExecutor getPool() { return pool; } public static void main(String[] args) { System.out.println(pool.getPoolSize()); } }