线程状态
Posted xmsx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程状态相关的知识,希望对你有一定的参考价值。
目录
内容
查看枚举类型 Thread.state,线程状态:
public enum State {
NEW,
RUNNABLE,
BLOCKED,
WAITING,
TIMED_WAITING,
TERMINATED;
}
NEW
新创建的线程对象,在执行 start 方法之前就是这个状态。
RUNNABLE
包括就绪与运行时两种状态。
就绪:调用 start 方法后,线程进入可运行线程池,等待被线程调用选中,获取 CPU 使用权。
运行:就绪状态的线程获得了 CPU 使用权,执行字节码。
BLOCKED
阻塞状态,线程在等待获得锁进入同步块。
调用 wait 方法之后进入阻塞状态。
WAITING
等待状态,可以通过以下方式进入等待状态:
- 调用无超时的 wait 方法
- 调用 join 方法(本质还是通过 wait 方法实现的)
- 调用 LockSupport.park
TIMED_WAITING
等待状态,一定时间线程继续执行或者就绪等待执行。
TERMINATED
线程已终止。
线程状态转换
append
【Q】阻塞状态和等待状态的区别
进入 waiting 状态是线程主动的,在同步代码之内;
进入 blocked 状态是被动的,在同步代码之外。
以上是关于线程状态的主要内容,如果未能解决你的问题,请参考以下文章