JAVA线程究竟有几种状态?

2023-10-27

线程状态

线程的状态,在你*度的过程中,你会发现,答案有5种,6种,甚至还有7种的,那么究竟有几种状态?
准确答案就是6种
在编译器JDK1.5以后的环境下,打开Thread进入源码看看:

 * A thread state.  A thread can be in one of the following states:
 * 一个线程,有以下几种状态
 * <ul>
 * <li>{@link #NEW}<br>
 * ①未启动的线程状态   new
 *     A thread that has not yet started is in this state.
 *     </li>
 * <li>{@link #RUNNABLE}<br>
 * ②在jvm中执行的线程状态  runnable
 *     A thread executing in the Java virtual machine is in this state.
 *     </li>
 * <li>{@link #BLOCKED}<br>
 * ③一个线程被阻塞,等待监控锁的线程状态  blocked
 *     A thread that is blocked waiting for a monitor lock
 *     is in this state.
 *     </li>
 * <li>{@link #WAITING}<br>
 * 	④一个线程  为了永久等待另一个线程特定的操作的线程状态  waiting
 * 翻译后通顺点:无限等待另一个线程的线程执行特定的操作处于此状态
 *     A thread that is waiting indefinitely for another thread to
 *     perform a particular action is in this state.
 *     </li>
 * <li>{@link #TIMED_WAITING}<br>
 *   ⑤ 一个线程  等待另一个线程执行特定的操作的等待时间内的线程状态   timed_waiting
 *     正在等待另一个线程执行某个操作的线程在指定的等待时间内处于这种状态
 *     A thread that is waiting for another thread to perform an action
 *     for up to a specified waiting time is in this state.
 *     </li>
 * <li>{@link #TERMINATED}<br>
 * ⑥一个线程已经被退出的状态   终止  terminated
 *     A thread that has exited is in this state.
 *     </li>
 * </ul>
 *
 * <p>
 * 在给定的时间点上,线程只能处于一种状态。这些状态是虚拟机状态,不反映任何操作系统线程状态
 * A thread can be in only one state at a given point in time.
 * These states are virtual machine states which do not reflect
 * any operating system thread states.
 *
 * @since   1.5   
 * @see #getState
 */
public enum State {
        /**
         * Thread state for a thread which has not yet started.
         */
        NEW,

        /**
         * Thread state for a runnable thread.  A thread in the runnable
         * state is executing in the Java virtual machine but it may
         * be waiting for other resources from the operating system
         * such as processor.
         */
        RUNNABLE,

        /**
         * Thread state for a thread blocked waiting for a monitor lock.
         * A thread in the blocked state is waiting for a monitor lock
         * to enter a synchronized block/method or
         * reenter a synchronized block/method after calling
         * {@link Object#wait() Object.wait}.
         */
        BLOCKED,

        /**
         * Thread state for a waiting thread.
         * A thread is in the waiting state due to calling one of the
         * following methods:
         * <ul>
         *   <li>{@link Object#wait() Object.wait} with no timeout</li>
         *   <li>{@link #join() Thread.join} with no timeout</li>
         *   <li>{@link LockSupport#park() LockSupport.park}</li>
         * </ul>
         *
         * <p>A thread in the waiting state is waiting for another thread to
         * perform a particular action.
         *
         * For example, a thread that has called <tt>Object.wait()</tt>
         * on an object is waiting for another thread to call
         * <tt>Object.notify()</tt> or <tt>Object.notifyAll()</tt> on
         * that object. A thread that has called <tt>Thread.join()</tt>
         * is waiting for a specified thread to terminate.
         */
        WAITING,

        /**
         * Thread state for a waiting thread with a specified waiting time.
         * A thread is in the timed waiting state due to calling one of
         * the following methods with a specified positive waiting time:
         * <ul>
         *   <li>{@link #sleep Thread.sleep}</li>
         *   <li>{@link Object#wait(long) Object.wait} with timeout</li>
         *   <li>{@link #join(long) Thread.join} with timeout</li>
         *   <li>{@link LockSupport#parkNanos LockSupport.parkNanos}</li>
         *   <li>{@link LockSupport#parkUntil LockSupport.parkUntil}</li>
         * </ul>
         */
        TIMED_WAITING,

        /**
         * Thread state for a terminated thread.
         * The thread has completed execution.
         */
        TERMINATED;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA线程究竟有几种状态? 的相关文章

随机推荐

  • 优化算法 - 萤火虫算法在订单分批问题中的应用及Matlab实现

    优化算法 萤火虫算法在订单分批问题中的应用及Matlab实现 订单分批问题是指将大量订单分成若干个较小的批次进行处理 以提高生产效率和降低成本 在实际应用中 如何进行订单分批是一个需要考虑多种因素的复杂决策问题 而萤火虫算法是一种能够解决这
  • 协同异构多机器人系统:综述

    研究背景 我们所生活的世界的动态和不可预测的本质使得很难设计出一个能够有效地适应所有环境的自主机器人 因此 各种形状 大小和能力的机器人 如无人机 无人地面车辆 类人机器人等机器人 随着物联网 物联网 的出现 进行合作将大大增加自动化任务的
  • 数据分析之Numpy常用方法【等差数列:np.linspace()、取整:np.ceil() ,np.floor()】

    这里写目录标题 1 np linspace 2 np ceil np floor 1 np linspace np linspace 主要用于生成等差数列 相关参数如下 start 起始点 stop 终止点 包含 num 生成start和s
  • React(条件、列表渲染)及其生命周期

    条件渲染 下面用成绩等级和游戏段位来实际来操作举例一下 以便于理解 vue中 用v if angular中 用 ngIf 条件渲染 if rcc import React Component from react export defaul
  • 安装cuda 11 ,cudnn,pytorch 1.7

    安装cuda cudann pytorch 1 安装cuda 先康康电脑里面有没有 nvcc V 结果当然是没有 要安装首选需要康康自己的显卡能支持到多少的cuda 打开这个 可以通过搜索直接搜到 点击系统信息 在组件栏可以发现我的电脑支持
  • JAVA调用R语言

    编程程序调用R语言之前 需要通过R控制台打开服务器 需要导入这两个包 import org rosuda REngine REXP import org rosuda REngine REXPMismatchException import
  • 角焊缝缺陷_坡口全熔透焊缝必须是一级焊缝吗?

    十年前笔者去精工钢构加工厂参观 参观的项目是某个火车站站房屋顶钢结构 设计单位要求钢框架梁 民用建筑 不需要考虑疲劳 翼缘与腹板的焊接采用坡口全熔透焊缝 且焊缝质量等级为一级 焊接工人在单边坡口焊完一侧焊缝后 用碳弧气刨的方式在另一侧清根
  • 【Linux】网络编程基础

    文章目录 网络基础 1 网络与操作系统的关系 2 计算机网络发展 3 协议 3 1协议分层 3 2OS七层模型 3 3TCP IP五层模型 4 网络传输基本流程 4 1数据包的封装和分用 4 1 1报头和有效载荷 4 2局域网的两台主机通信
  • C#之删除数据库的数据(删)

    private void button3 Click object sender EventArgs e try string id dataGridView1 SelectedRows 0 Cells 0 Value ToString 获
  • BlocProvider add数据流程

    我们看看往bloc中添加数据流程 以demo为例 void incrementCounter counter BlocProvider of
  • TCP协议的三次握手(为了建立连接)

    TCP协议的三次握手 为了建立连接 第一次握手 客户端 Client 向服务器端 Server 发送连接请求 等待服务器端确认 在这一次 客户端会发送一个含SYN同步标志的 TCP报文 SYN同步报文会指明客户端使用的端口以及TCP连接的初
  • Prometheus-Alertmanager 警报管理器-通知模版

    文章目录 一 通知模版介绍 二 模板中可用的数据结构 1 数据 Data 2 告警 Alert 3 KV 4 方法 三 定义可重用模版 一 通知模版介绍 发送给接收方的通知是通过模板构建的 警报管理器附带默认模板 但也可以自定义它们 为避免
  • AndroidStudio升级问题

    前言 今天开这篇文章记录之后遇到AndroidStudio升级或BUG问题 Android Studio Dolphin 2021 3 1 Patch 1 升级 无法运行项目 Android Studio Dolphin 2021 3 1
  • 【源码+文档】绘制太阳系之C语言

    一 实验任务 绘制出一个太阳系 要求 1 有详细的计算步骤 2 至少包含太阳 地球和月亮 3 用 OpenGL 进行绘制 Bonus 1 用代码实现出可执行的实例 2 绘制出行星的轨道 二 原理和分析 1 OpenGL 材质和光照 Open
  • CSS宽度问题

    一 魔法 为 DOM 设置宽度有哪些方式呢 最常用的是配置width属性 width属性在配置时 也有多种方式 width min width max width 通常当配置了 width 时 不会再配置min width max widt
  • 【华为OD机试真题 C语言】48、 寻找身高相近的小朋友

    文章目录 一 题目 题目描述 输入输出 样例1 二 思路参考 三 代码参考 作者 鲨鱼狼臧 个人博客首页 鲨鱼狼臧 专栏介绍 2023华为OD机试真题 使用C语言进行解答 专栏每篇文章都包括真题 思路参考 代码分析 订阅有问题后续可与博主解
  • 基于深度学习实现以图搜图功能

    前记 深度学习的发展使得在此之前以机器学习为主流算法的相关实现变得简单 而且准确率更高 效果更好 在图像检索这一块儿 目前有谷歌的以图搜图 百度的以图搜图 而百度以图搜图的关键技术叫做 感知哈希算法 这是一个很简单且快速的算法 其原理在于针
  • 滚蛋吧,正则表达式!

    大家好 我是良许 不知道大家有没有被正则表达式支配过的恐惧 看着一行火星文一样的表达式 虽然每一个字符都认识 但放在一起直接就让人蒙圈了 你是不是也有这样的操作 比如你需要使用 电子邮箱正则表达式 首先想到的就是直接百度上搜索一个 然后采用
  • 数据名称:中国家庭追踪调查(CFPS)数据区县码数据描述:162个区县代码,适用于10-20年份,可匹配约85-90%的样本。可依次匹配coutyid-区县行政码code-地级市行政码city-省份

    数据名称 中国家庭追踪调查 CFPS 数据区县码 数据描述 162个区县代码 适用于10 20年份 可匹配约85 90 的样本 可依次匹配coutyid 区县行政码code 地级市行政码city 省份行政码province 从而进行市或县层
  • JAVA线程究竟有几种状态?

    线程状态 线程的状态 在你 度的过程中 你会发现 答案有5种 6种 甚至还有7种的 那么究竟有几种状态 准确答案就是6种 在编译器JDK1 5以后的环境下 打开Thread进入源码看看 A thread state A thread can