参考源码注解进行修改添加
Thread.State
六个状态详解
新建(New):创建后还没有启动的线程状态
运行(Runnable):线程正在JVM中执行的状态,但它可能正在等待来自操作系统的其他资源(例如处理器资源)因此包含Running和Ready状态
阻塞(Blocked):处于阻塞状态的线程正在等待monitor锁的状态
无限期等待(Waiting):不会分配CPU执行时间,需要显式被唤醒
限期等待(Timed Waiting):在一定时间后会由系统自动唤醒
结束(Terminated):线程执行结束并且终止的状态
进入无限期等待的方法
没有设置Timeout参数的Object.wait()方法
没有设置Timeout参数的Thread.join()方法
LockSupport.park()方法
附:没有设置参数的join方法实际上调用的是wait(0)方法,如下图源码所示
进入限期等待的方法
设置了Timeout参数的Object.wait()方法
设置了Timeout参数的Thread.join()方法
LockSupport.parkNanos
LockSupport.parkUntil
进入阻塞状态的操作
处于阻塞状态的线程正在等待监视器锁进入同步块/方法
调用Object.wait()后重新进入同步代码块或同步方法
状态转换图
join源码