线程池核心参数及其如何复用线程 Mark2When 2019-07-24 173 阅读1分钟 一、核心参数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler); corePoolSize //核心线程数 maximumPoolSize //最大线程数 keepAliveTime //核心线程超时干掉时间 workQueue //任务队列 ThreadFactory//线程工厂 RejectedExecutionHandler//拒绝策略 二、核心线程、队列线程、拒绝策略控制规则 线程数量 = n n > corePoolSize -> 进队列 n > corePoolSize && 队列满 -> n > maximumPoolSize ? 拒绝策略 : 创建线程 三、如何保证核心线程的存活 利用阻塞队列阻塞线程 Runnable r = timed ? workQueue.poll(keepAliveTime, TimeUnit.NANOSECONDS) : workQueue.take(); Work线程执行自己任务完毕会从队列中取任务执行,通过阻塞队列来控制线程保持还是消亡 四、如何保证核心线程的存活 当线程池中维护的线程数量 < corePoolSize,线程不会复用会创建新的线程