Java 线程状态图

Java 线程的状态图是用来表示 Java 线程生命周期的图形表示,它可以帮助我们更好地理解 Java 线程的生命周期,以及线程之间的状态转换。

Java 线程状态图主要由以下几个状态组成:

1、New:新建状态,表示线程被创建后尚未启动的状态。

2、Runnable:可运行状态,表示线程被创建后,调用了 start() 方法,正在 JVM 中等待 CPU 调度的状态。

3、Blocked:被阻塞状态,表示线程在等待某种资源,例如:等待锁,等待网络资源,等待 IO 资源等。

4、Waiting:等待状态,表示线程在等待某种条件,例如:等待某个线程的通知,等待超时等。

5、Timed Waiting:计时等待状态,表示线程在等待某种条件,但是会在指定的时间内自动唤醒,例如:等待某个线程的通知,等待超时等。

6、Terminated:终止状态,表示线程已经结束执行,或者被取消。

状态转换关系

状态转换关系是指线程在不同状态之间的转换关系,Java 线程状态图的状态转换关系如下:

1、New → Runnable:线程调用 start() 方法后,就会由 New 状态进入 Runnable 状态;

2、Runnable → Blocked:线程在运行时,如果遇到阻塞,例如:等待锁,等待网络资源,等待 IO 资源等,就会由 Runnable 状态进入 Blocked 状态;

3、Blocked → Runnable:线程在阻塞状态中,如果资源可用,就会由 Blocked 状态进入 Runnable 状态;

4、Runnable → Waiting:线程在运行时,如果遇到某种条件,例如:等待某个线程的通知,等待超时等,就会由 Runnable 状态进入 Waiting 状态;

5、Waiting → Runnable:线程在等待状态中,如果条件满足,就会由 Waiting 状态进入 Runnable 状态;

6、Runnable → Timed Waiting:线程在运行时,如果遇到某种条件,例如:等待某个线程的通知,等待超时等,就会由 Runnable 状态进入 Timed Waiting 状态;

7、Timed Waiting → Runnable:线程在计时等待状态中,如果条件满足,或者超时,就会由 Timed Waiting 状态进入 Runnable 状态;

8、Runnable → Terminated:线程在运行时,如果执行完毕,或者被取消,就会由 Runnable 状态进入 Terminated 状态。