1.NEW(初始):线程新建但未启动(star)状态。
2.RUNNABLE(运行):调用了star方法,其中有Runnable(得到时间片运行中状态)和Ready(未得到时间片就绪状态)两种状态。
3.BLOCKED(阻塞):阻塞状态,如果未遇到锁,线程就会变为阻塞状态等待另一个线程释放锁。
4.WAITING:无限期等待状态
5.TIMED_WAITING:有明确结束时间的等待状态。
6.TERMINATED:已终止线程的线程状态,线程已经结束执行。
另外:Java将操作系统中的运行和就绪俩个状态合并称为运行状态。
以下代码可以演示线程的几种状态:
import java.util.concurrent.TimeUnit;
public class CsdnDemo {
public static void main(String[] args) throws InterruptedException {
//printStste();//打印所有的线程状态
Thread t1 = new Thread(()->{
System.out.println("当前线程状态2:" + Thread.currentThread().getState());
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException exception) {
exception.printStackTrace();
}
});
System.out.println("当前线程的状态1:" + t1.getState());
t1.start();
//让主线程休眠1s
Thread.sleep(1000);
System.out.println("当前线程状态3:" + t1.getState());
//等待子线程执行完
t1.join();
System.out.println("当前线程状态4:" + t1.getState());
}
/**
* 打印所有的线程状态
*/
private static void printStste() {
for (Thread.State item : Thread.State.values()) {
System.out.println(item);
}
}
}