线程状态
- NEW:安排了工作,还为开始行动(创建了Thread对象,但是还没调用start方法,系统内核还没有线程)
- RUNNABLE:可工作的,又可以分成正在工作中和即将开始工作(就绪状态,有两种:1. 正在CPU上运行,2.还没在CPU运行呢,但是已经准备好了)
- BLOCKED:这几个都表示排队等着其他事情(等待锁,进入阻塞状态)
- WAITING:这几个都表示排队等着其他事情(线程中调用了wait进入阻塞状态)
- TIMED_WAITING:这几个都表示排队等着其他事情(线程中通过sleep进入的阻塞状态)
- TERMINGTED:工作完成了(系统里面的线程已经执行完毕了,销毁了(相当于run执行完了,但是Thread对象还在))
public class Demo12 {
public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(() -> {
System.out.println("hello thread");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
System.out.println(t.getState());
t.start();
System.out.println(t.getState());
t.join();
System.out.println(t.getState());
}
}
运行结果:
NEW
RUNNABLE
hello thread
TERMINATED