MST

星途 面试题库

面试题:Java线程池中常见的状态有哪些,以及它们是如何进行状态切换的

请简述Java线程池中常见的几种状态,例如RUNNING、SHUTDOWN等,并详细说明在何种操作下会发生状态的切换,例如从RUNNING到SHUTDOWN的切换条件。
26.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

Java线程池中常见的状态及状态切换

  1. RUNNING
    • 含义:线程池处于运行状态,能够接受新任务并处理队列中的任务。
    • 切换条件:创建线程池后,线程池默认处于RUNNING状态。
  2. SHUTDOWN
    • 含义:线程池不再接受新任务,但会继续处理工作队列中已有的任务。
    • 切换条件:调用shutdown()方法后,线程池从RUNNING状态切换到SHUTDOWN状态。
  3. STOP
    • 含义:线程池停止接受新任务,并且会中断正在执行的任务,同时丢弃工作队列中的任务。
    • 切换条件:调用shutdownNow()方法后,线程池从RUNNINGSHUTDOWN状态切换到STOP状态。
  4. TIDYING
    • 含义:所有任务都已终止,工作线程数为0。线程池即将进入TERMINATED状态。
    • 切换条件:当处于SHUTDOWN状态,且工作队列和正在执行的任务都为空时,线程池会进入TIDYING状态;或者当处于STOP状态,且正在执行的任务为空时,也会进入TIDYING状态。
  5. TERMINATED
    • 含义:线程池彻底终止,所有任务都已处理完成。
    • 切换条件:在线程池进入TIDYING状态后,会执行terminated()钩子方法,执行完毕后,线程池进入TERMINATED状态。