Java中多线程的六种状态详解

在咱们的Thread类中,咱们能够看到多线程有六种状态。

NEW:初始状态
RUNNABLE:运行状态
BLOCKED:阻塞状态
WAITING:等待状态
TIMED_WAITING:超时等待状态
TERMINATED:终止状态多线程

六种状态之间的转化关系以下:


一、NEW 表示线程建立成功,但没有运行,在 new Thread 以后,没有 start 以前,线程都处于 NEW 状态;
二、RUNNABLE 表示线程正在运行中,当咱们运行 strat 方法,子线程被建立成功以后,子线程的状态变成 RUNNABLE;
三、TERMINATED 表示线程已经运行结束,子线程运行完成、被打断、被停止,状态都会从 RUNNABLE 变成 TERMINATED;
四、BLOCKED 表示线程被阻塞,若是线程正好在等待得到 monitor lock 锁,好比在等待进入 synchronized 修饰的代码块或方法时,会从 RUNNABLE 变成 BLOCKED;
五、 WAITING 和 TIMED_WAITING 都表示等待,如今在遇到 Object#wait、Thread#join、
LockSupport#park 这些方法时,线程就会等待另外一个线程执行完特定的动做以后,才能结
束等待,只不过 TIMED_WAITING 是带有等待时间的;线程

相关文章
相关标签/搜索