线程的生命周期

92 阅读1分钟

线程的生命周期包含 5 个阶段,包括:新建、就绪、运行、阻塞、销毁。

  • 新建(NEW):就是刚使用 new 方法,new 出来的线程;
  • 就绪(RUNNABLE):就是调用的线程的 start()方法后,这时候线程处于等待 CPU 分配 资源阶段,谁先抢的 CPU 资源,谁开始执行;
  • 运行(RUNNING):当就绪的线程被调度并获得 CPU 资源时,便进入运行状态,run 方 法定义了线程的操作和功能;
  • 阻塞(BLOCKED):在运行状态的时候,可能因为某些原因导致运行状态的线程变成了 阻塞状态,比如 sleep()、wait()之后线程就处于了阻塞状态,这个时候需要其他机制将处 75 于阻塞状态的线程唤醒,比如调用 notify 或者 notifyAll()方法。唤醒的线程不会立刻执行 run 方法,它们要再次等待 CPU 分配资源进入运行状态;
  • 等待(WAITING):一个线程在等待另一个线程执行一个(唤醒)动作时,该线程进 入 Waiting 状态。进入这个状态后不能自动唤醒,必须等待另一个线程调用 notify 方法 或者 notifyAll 方法时才能够被唤醒。
  • 销毁(TERMINATED):如果线程正常执行完毕后或线程被提前强制性的终止或出现异 常导致结束,那么线程就要被销毁,释放资源