首页 > 试题广场 >

Java线程池中如果已经没有可执行的任务了,那么此时线程池中

[单选题]
Java线程池中如果已经没有可执行的任务了,那么此时线程池中的线程会
  • 为了避免反复创建线程带来的开销,已启动线程不会关闭,等待新任务到来
  • 已启动的线程在keepAlive时间后自行关闭
  • 核心线程池中的线程在 keepAlive 计时结束后自行关闭,非核心线程立即关闭
  • 核心线程池中的线程不会关闭,非核心线程在 keepAlive 计时结束后自行关闭
线程池的概念 线程池是一种管理线程的机制,它预先创建一定数量的线程,通过复用这些线程来执行多个任务,避免频繁创建和销毁线程带来的性能开销。当有任务提交时,线程池会分配空闲线程执行任务;若没有空闲线程,任务会进入等待队列,直到有线程空闲。 核心线程池与非核心线程池 • 核心线程池:线程池中始终保持的线程数量,即使这些线程处于空闲状态也不会被销毁(除非设置了允许核心线程超时)。核心线程是线程池的基础,用于处理常规任务。 • 非核心线程池:当核心线程都在忙碌,且任务队列已满时,线程池会临时创建的线程。非核心线程仅在任务量超过核心线程处理能力时才会被创建,任务减少后会被销毁(受keepalive参数控制)。 keepalive参数 keepalive(存活时间)是针对非核心线程的参数,指当非核心线程处于空闲状态时,能保持存活的最长时间。超过这个时间后,空闲的非核心线程会被销毁,以释放系统资源。 例如:若keepalive设为60秒,非核心线程完成任务后空闲超过60秒,就会被线程池回收。部分线程池也支持对核心线程设置keepalive,允许核心线程在空闲时超时销毁。
发表于 2025-08-11 00:53:27 回复(0)