线程状态

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

等待状态,可以通过以下方式进入等待状态:

  1. 调用无超时的 wait 方法
  2. 调用 join 方法(本质还是通过 wait 方法实现的)
  3. 调用 LockSupport.park

TIMED_WAITING

等待状态,一定时间线程继续执行或者就绪等待执行。

TERMINATED

线程已终止。


线程状态转换

技术分享图片

append

【Q】阻塞状态和等待状态的区别

进入 waiting 状态是线程主动的,在同步代码之内;
进入 blocked 状态是被动的,在同步代码之外。

以上是关于线程状态的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段13——Vue的状态大管家

VSCode自定义代码片段13——Vue的状态大管家

JavaSE线程基础

java BottomBarNavigation代码保留片段状态

python多线程

仅在一个片段中隐藏状态栏并在其他片段中显示