参考文档:BLOCKED、WAITING、TIMED_WAITING详细理解
线程状态转换图
线程可以处于以下状态之一:
NEW
:尚未启动的线程处于此状态。RUNNABLE
:在Java虚拟机中执行的线程处于此状态。【Runnable 状态又可以分为 Ready 和 Running 状态】
BLOCKED
:被阻塞等待监视器锁定的线程处于此状态。WAITING
:正在等待另一个线程执行特定动作的线程处于此状态。TIMED_WAITING
:正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。TERMINATED
:已退出的线程处于此状态。
package thread_;
/**
* @Author: Gin
* @Description:
* @Modified By: Gin
* @Date: Created in 12:23 2021/9/27
*/
public class Thread09 {
public static void main(String[] args) throws InterruptedException {
Threa threa = new Threa();
System.out.println(threa.getName() + " 状态 " + threa.getState());
threa.start();
while(threa.getState() != Thread.State.TERMINATED){
System.out.println(threa.getName() + " 状态 " + threa.getState());
Thread.sleep(500);
}
System.out.println(threa.getName() + " 状态 " + threa.getState());
}
}
class Threa extends Thread{
@Override
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println("hi " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}