ThreadPoolExecutor七大参数详解
请详细说明ThreadPoolExecutor构造函数的七个核心参数以及线程池的工作流程。
回答
专业代码师
七大参数:
- corePoolSize:核心线程数,即使空闲也会保持存活(除非allowCoreThreadTimeOut)。
- maximumPoolSize:最大线程数(核心+非核心)。
- keepAliveTime:非核心线程空闲存活时间。
- unit:keepAliveTime的时间单位。
- workQueue:阻塞队列(ArrayBlockingQueue/LinkedBlockingQueue/SynchronousQueue等)。
- threadFactory:线程工厂,可自定义线程名称、优先级、是否为守护线程。
- handler:拒绝策略(AbortPolicy/CallerRunsPolicy/DiscardPolicy/DiscardOldestPolicy)。
工作流程:
- 线程数<corePoolSize→创建核心线程执行任务。
- 线程数≥corePoolSize→任务入队workQueue。
- 队列满且线程数<maximumPoolSize→创建非核心线程执行任务。
- 队列满且线程数≥maximumPoolSize→执行拒绝策略。
- 非核心线程空闲超过keepAliveTime→回收。