Java 中线程的生命周期有哪些状态?

· 约 3 分钟读完 · 第 54 / 274 章

推荐答案

在Java中,线程的生命周期包括以下状态:

  1. NEW(新建状态):线程对象被创建,但尚未启动。
  2. RUNNABLE(可运行状态):线程正在JVM中执行,但可能正在等待操作系统资源(如CPU)。
  3. BLOCKED(阻塞状态):线程因为等待监视器锁而处于阻塞状态。
  4. WAITING(等待状态):线程无限期等待另一个线程执行特定操作。
  5. TIMED_WAITING(超时等待状态):线程在指定的时间内等待另一个线程执行操作。
  6. TERMINATED(终止状态):线程已经执行完毕。

本题详细解读

NEW(新建状态)

当创建一个Thread对象时,线程处于NEW状态。此时线程尚未启动,start()方法还未被调用。

RUNNABLE(可运行状态)

当调用start()方法后,线程进入RUNNABLE状态。此时线程可能正在执行,或者正在等待CPU资源。

BLOCKED(阻塞状态)

线程在等待获取一个监视器锁时,进入BLOCKED状态。这种情况通常发生在多个线程竞争同一个锁时。

WAITING(等待状态)

线程调用Object.wait()、Thread.join()或LockSupport.park()方法时,进入WAITING状态。此时线程会无限期等待,直到其他线程唤醒它。

TIMED_WAITING(超时等待状态)

与WAITING状态类似,但线程在指定的时间内等待。调用Thread.sleep()、Object.wait(long timeout)、Thread.join(long millis)等方法时,线程进入TIMED_WAITING状态。

TERMINATED(终止状态)

当线程的run()方法执行完毕或线程被强制终止时,线程进入TERMINATED状态。