Thread.State
/** *线程状态 */ public enum State { /** * 新建: 线程尚未启动状态 */ NEW, /** * 就绪: 线程正在JVM中执行 * 正在等待其他资源:如cpu */ RUNNABLE, /** * 阻塞: 线程阻塞在等待监视器锁 * 等待监视器锁进入 synchronized 代码块/方法
* 或者Object.wait后重新进入*/ BLOCKED, /** * 等待: 等待状态,等待其他线程的特定操作 * 调用一下方法可以进入此状态 * 1.Object.wait() 不带有超时 等待:Object.notify/notifyAll * 2.Thread.jion() 不带超时 等待:等待特定的线程执行结束
* 3.LocalSupport.park() 等待:unPark()
*/ WAITING, /** * 定时等待: 具有指定时间的等待状态 * 以下方法可以进入此状态: * 1.Thread.sleep * 2.Thread.join(long) * 3.Object.wait(long) * 4.LockSupport.parkNanos * 5.LockSupport.parkUntil */ TIMED_WAITING, /** * 终止: 线程已经执行完成 */ TERMINATED; }
线程的状态变化:
线程状态转换图: