Java 线程池参数面试一文详述

266 阅读1分钟

1. 概述

Java 线程池参数即意义是面试过程中必问必回的知识点,本文针对线程池的各个参数做一个翔实的整理与描述,帮助大家理解记忆。

2. ThreadPool 参数详述

先说结论(面试可参考回答):Java 线程池主要有核心线程数,等待队列,最大线程数,最大线程存活时间,拒绝策略和线程工厂6个参数,前5个最为重要。在请求到来时,优先在核心线程中取线程给消费者(核心线程是一直开启的),核心线程全部分配出去后,消费者的请求会放到等待队列中,如果等待队列也满了,则会开启到最大线程数处理请求(最大线程数的线程在空闲存活时间后会被回收),如果前三者都满了,则会触发拒绝策略(抛弃等待队列队首或者队尾的请求,抛出或者不抛出异常)。

public ThreadPoolExecutor(int corePoolSize, // 核心线程数
                          int maximumPoolSize, // 最大线程数
                          long keepAliveTime, // 存活时间
                          TimeUnit unit, // 存活时间单位
                          BlockingQueue<Runnable> workQueue,// 工作队列
                          ThreadFactory threadFactory // 线程工厂
                          )
}