线程的生命周期

!!! note 目录

线程的生命周期

Java 线程的生命周期描述了一个线程从创建到终止的整个过程。

一、线程的生命周期七个状态

  1. 新建(New)

    • 当新创建一个线程对象时,线程处于新建状态。
    • 此时线程还没有开始运行,尚未分配 CPU 和其他资源。
  2. 就绪(Runnable)

    • 当调用线程的 start() 方法后,线程进入就绪状态。
    • 处于就绪状态的线程已经分配了所有必要的资源,等待系统调度执行。
  3. 运行(Running)

    • 当线程获取了 CPU 资源并开始执行时,线程进入运行状态。
    • 此时线程正在执行任务中,直到任务执行完毕或者发生阻塞。
  4. 阻塞(Blocked)

    • 在特定情况下,线程会进入阻塞状态,暂时停止执行。
    • 常见的阻塞情况包括等待某个资源、等待输入/输出完成、等待获取锁等。
  5. 等待(Waiting)

    • 线程处于等待状态,等待其他线程的通知或者特定条件的满足。
    • 进入等待状态的线程可以通过 wait()join() 或者 sleep() 等方法触发。
  6. 超时等待(Timed Waiting)

    • 线程等待一段指定的时间后自动恢复到就绪状态。
    • 通过 sleep()join(timeout)wait(timeout) 等方法可以使线程进入超时等待状态。
  7. 终止(Terminated)

    • 线程执行完任务后或者因异常退出执行,进入终止状态。
    • 终止状态的线程不再运行,生命周期结束,无法再启动或者执行其他操作。