Java线程状态

Java线程状态

Java线程有六个状态,可以在Thread类中的枚举类型State中查看。

1. NEW

当Thread刚创建,并且还未调用start()方法,此时的状态就是NEW。

2. RUNNABLE

一个RUNNABLE状态的线程已经运行在JVM中,但是它可能需要等待某些操作系统的资源,例如CPU。

3. BLOCKED

一个BLOCKED状态的线程正在等待获取一个锁,例如线程A进入了synchronized方法,若线程B也希望进入synchronized方法,此时线程B等待获取锁,进入BLOCKED状态。

4. WAITING

由于调用了下列没有timeout参数的方法,线程将会进入WAITING状态。也就是说,WAITING状态的线程等待另一个线程完成一个特殊的行为。
- Object.wait
- Thread.join
- LockSupport.park

5. TIME_WAITING

TIME_WAITING状态的线程会等待一段特定的时间。当调用下列带timeout参数的方法时会进入TIME_WAITING状态。
- Thread.sleep
- Object.wait
- Thread.join
- LockSupport.parkNanos
- LockSupport.parkUntil

6. TERMINATED

当线程完成任务后进入TERMINATED状态。

详细分析可以看这篇博客Java线程状态分析

你可能感兴趣的:(Java线程状态)