Java线程的生命周期

Java 中线程的生命周期:
Java 语言中线程共有六种状态,分别是:
NEW(初始化状态)
RUNNABLE(可运行 / 运行状态)
BLOCKED(阻塞状态)
WAITING(无时限等待)
TIMED_WAITING(有时限等待)
TERMINATED(终止状态)
Java 线程中的 BLOCKED、WAITING、TIMED_WAITING 可以理解成一种状态,即休眠状态。

线程状态是如何切换的呢?

当线程遇到synchronized,如果没有获取到锁,则从RUNNABLE 状态转换到BLOCKED 状态。

线程持有锁,调用了Object.wait() 方法,则从RUNNABLE 状态转换到WAITING 状态。

dangq调用无参数的 Thread.join() 方法

线程调用Thread.sleep(long millis)方法、Object.wait(long timeout) 方法、Thread.join(long millis) 方法,则从RUNNABLE 状态转换到TIMED_WAITING 状态。

线程执行完 run() 方法后,则从RUNNABLE 状态转换到 TERMINATED 状态