面试题答案
一键面试corePoolSize
:- 定义:线程池中的核心线程数。
- 作用:当有任务提交到线程池时,线程池会优先创建线程来执行任务,直到线程数量达到
corePoolSize
。即使这些核心线程处于空闲状态,它们也不会被销毁,除非设置了allowCoreThreadTimeOut(true)
。例如,在一个Web服务器应用中,核心线程可以一直存在来处理持续到来的HTTP请求,这样可以避免频繁创建和销毁线程带来的开销。
maximumPoolSize
:- 定义:线程池中允许的最大线程数。
- 作用:当任务队列已满,并且线程数量小于
maximumPoolSize
时,线程池会继续创建新的线程来处理任务,直到线程数达到maximumPoolSize
。例如,在一个批量数据处理的场景中,如果突然有大量的数据需要处理,超过了核心线程数和任务队列的承载能力,就会创建更多线程,最多达到maximumPoolSize
,以尽快处理完任务。但如果线程数达到maximumPoolSize
后,任务队列仍满,就会按照饱和策略处理新任务。
keepAliveTime
:- 定义:当线程池中的线程数量超过
corePoolSize
时,多余的空闲线程的存活时间。 - 作用:当线程池中的线程数量大于
corePoolSize
时,那些空闲时间超过keepAliveTime
的线程会被销毁,直到线程数量减少到corePoolSize
。这有助于在任务处理量下降时,自动回收多余的线程资源,避免资源浪费。比如在一个电商系统的后台任务处理线程池中,促销活动期间任务量很大,线程数可能会超过核心线程数,但活动结束后,多余的空闲线程在keepAliveTime
时间后就会被销毁。
- 定义:当线程池中的线程数量超过