线程状态
通过Thread类提供的getState()方法,我们可以获取到线程当前的状态,而在不同情况下,返回值不同,所代表的线程状态也不同:
- NEW:Thread对象创建好了,但是还没有调用start方法在系统中创建线程
- RUNNABLE:就绪状态,表示这个线程正在工作,或准备就绪随时可以去工作
- TERMINATED:Thread对象仍然存在,但系统内部的线程已经执行完代码了(start方法一个Thread对象只能执行一次)
- TIMED_WAITING:指定时间阻塞,达到一定时间自动解除的阻塞。执行sleep方法或者带有时间限制的join方法会陷入该阻塞。
- WAITING:不带时间的阻塞(死等),必须满足一定条件才能解除阻塞,join或wait会进入该阻塞。
示例
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread() {
@Override
public void run() {
for (int i = 0; i < 6; i++){
System.out.println("t1 线程正在运行 状态:" + getState());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
};
System.out.println("t1 线程启动前 状态:" + t1.getState());
t1.start();
Thread.sleep(50);
for(int i = 0; i< 3; i++) {
Thread.sleep(1000);
System.out.println("main检测t1线程状态:" + t1.getState());
}
t1.join();
System.out.println("t1 线程结束后 状态:" + t1.getState());
}