Thread线程有哪几种状态,这篇文章带你深入了解!

RT-Thread学习笔记——线程管理 前言 本文主要讲RT-Thread的线程管理,基于STM32L475VET5。学习RT-Thread的线程管理,实现线程的创建、多线程创建,线程的挂起与恢复等,过程中会涉及核对象容器概念,读者如果对RT-Thread的对象容器不了解,可先看《RT-Thread编程指南》的内核基础部分。 一、RT-Thread线程管理的功能特点 RT-Thread 线程管理的主要功能是对线程进行管理和调... 阅读详情

Thread线程有哪几种状态,这也是面试中很多小伙伴都会被问到的知识点。Thread线程状态是应该掌握的基础知识。但是很多小伙伴如果没有总结过的话,面试过程可能会懵圈,这里我稍作整理,希望小伙伴们可以查漏补缺。

Thread源码中有定义State的枚举类,State枚举类中有明确定义线程的状态。源码如下。

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;
    }

通过源码阅读,我们可以知道线程的状态分别是NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。

我们分别对线程不同状态进行简单描述:

  1. NEW:尚未启动的线程的线程状态。
  2. RUNNABLE:可运行线程的线程状态。线程正在运行或者正在获取CPU时间片。
  3. BLOCKED:线程的线程状态被阻止,正在等待监视器锁。
  4. WAITING:等待线程的线程状态。调用某个线程的wait()、join()、 locksupport park()处于等待状态的线程。
  5. TIMED_WAITING:具有指定等待时间的等待线程的线程状态。调用某个线程的具有指定正等待时间的方法sleep(long)、wait(long)、join(long)、LockSupport Parknanos()、LockSupport ParkUntil()处于指定等待时间的等待线程的线程状态。
  6. TERMINATED:终止线程的线程状态。

我这边也整理了一份相关的线程状态转换图以供大家参考。

以上代供参考,如有不当之处,欢迎指出!!!

更多干货,欢迎大家关注和联系我。期待和大家一起更好的交流、探讨技术!!!

私有云平台搭建——OpenStack 私有云平台搭建——OpenStack 搭建过程 阅读详情

相关推荐

深圳SILAS(智能融合低空系统)无人机调度系统介绍

一、系统定位与核心目标SILAS(Smart Integrated Lower Airspace System)是深圳市为低空经济打造的“数字大脑”,由粤港澳大湾区数字经济研究院自主研发,定位为城市级低空飞行智能调度与管理平台。核心目标是解决低空经济中“高密度、高复杂度、多主体”的飞行调度难题,实现空域资源的高效分配、飞行安全的智能监管及全场景服务的无缝协同,支撑深圳从“无人机之都”向“天空之城”升级。二、核心架构:低空基础设施“四张网”设施网。

主攻大数据 人工智能 物联网 安全 低空经济等方向。mtsc 、gtest特邀分享嘉宾 3741

知识点三:线程(Thread)的状态有哪些?它的工作原理及常用方法

线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,也因此被称为轻量级的进程。 线程的状态在 JDK 1.5 之后以枚举的方式被定义在 Thread 的源码中,它总共包含以下 6 个状态: NEW,新建状态,线程被创建出来,但尚未启动时的线程状态; RUN...

latata的博客 914

PSIM+PIL+CCS三剑客:手把手教你搞定DSP28335的软硬件联合调试

本文详细介绍了如何利用PSIM、PIL与CCS三款工具,实现DSP28335的软硬件联合调试。通过搭建兼容环境、从PSIM仿真生成PIL代码,再到实战联合调试与问题诊断,手把手指导开发者构建从虚拟模型到实际硬件的完整验证闭环,有效提升电力电子与电机驱动等领域的开发效率与可靠性。

weixin_29183637的博客 185

03- 线程的状态有哪些?它是如何工作的?

线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,也因此被称为轻量级的进程。 线程的状态在 JDK 1.5 之后以枚举的方式被定义在 Thread 的源码中,它总共包含以下 6 个状态: NEW,新建状态,线程被创建出来,但尚未启动时的线程状态; RUN...

深海的鱼 569

SAP MM新手避坑指南:工厂间调拨用301还是303?手把手教你选对移动类型

本文深入解析SAP MM模块中工厂间调拨的301与303移动类型,帮助新手避开常见陷阱。通过对比一步法(301)和两步法(303+305)的核心差异、适用场景及财务影响,提供清晰的决策框架和实战技巧,确保库存调拨的准确性和效率。

weixin_29223603的博客 346

【乐企-工具篇】生成发票左上角二维码

【代码】【乐企-业务篇】生成发票左上角二维码。

九七的博客 707

Thread的使用、线程的几个重要操作和状态【JavaEE初阶】

但是 Java中 为了让程序猿 调试的时候方便理解,这个线程是谁,就在 JVM 里给对应的 Thread对象 加了个名字(JVM中的 Thread对象 和 操作系统内核里面的线程 一一对应)线程也分成 前台线程 和 后台线程(这个是可以自己来设置的),创建线程出来默认为是 前台线程,前台线程 会阻止进程结束;更通用的方法是,使用 Thread.currentThread() ,currentThread() 是一个静态方法,其特点是 哪个线程来调用这个方法,得到的线程就是哪个实例。

kim的博客 808

9.1 机器人动力学建模

目录9.1 机器人动力学建模一、机器人动力学的基本概念1. 什么是机器人动力学?2. 动力学方程二、机器人动力学建模方法1. 拉格朗日方法2. 牛顿-欧拉方法三、Simulink 中的机器人动力学建模1. 使用 Simscape Multibody 建模示例:构建一个两连杆机械臂的动力学模型。步骤:2. 使用 Robotics System Toolbox 建模示例:构建一个六自由度工业机器人的动力学模型。步骤:四、示例:两连杆机械臂的动力学建模目标:步骤:五、结果分析1. 动态响应2. 参数敏感性六、总结

xiaoheshang_123的博客 626

Thread常用的方法及线程状态原因解析

(1)这是一个线程类,用来实例化线程对象(2)该类中,有很多方法。普通成员方法,可以使用对象的引用进行调用,像statr()方法等等;而静态方法,则需要通过类名去调用,如:Thread.sleep()等等。(3)我们通过Thread来实例化对象,产生的对象,我们默认称为“线程对象”,start()之后,线程才产生。因此,类中拥有的各种属性方法,我们后面就默认称为该线程的属性和方法。(4)线程,有哪些状态、属性,方法,本质上都是Thread中的;因此我们实例化出的线程,也就具有了。后续所说的线程。

2301_77053417的博客 2119

【运动规划算法项目实战】Artificial Potential Field算法(附ROS C++代码)

在机器人行业中,路径规划是一个关键的任务,它涉及到如何让机器人在复杂的环境中安全而高效地移动。人工势场算法(Artificial Potential Field Algorithm)是一种常用的路径规划方法,它借鉴了物理学中的势能概念,通过模拟力的作用来引导机器人的移动。本文将详细介绍人工势场算法的原理、在路径规划中的应用、算法优缺点以及代码实现。人工势场算法基于两种势场:斥力场和引力场。斥力场使机器人远离障碍物,而引力场将机器人吸引到目标位置。

xiewf的博客 1万+

华为OD机试 - 物流仓储多维度成本利润综合查询系统 - 二维数组(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。某物流企业在全国多个仓库开展仓储业务,需要对不同仓库、不同时段的入库成本、出库收入和库存损耗进行综合统计分析,用于生成 日报、周报和月报。字段说明及取值范围如下:warehouses: int[] 扁平化数组 [w0d0in, w0d0out,

学Java,找哪吒 308

Thread(线程)的五种状态

一.线程的五种状态 创建,就绪,运行,挂起(包括阻塞,睡眠,等待),结束 1.创建 一个被创建的线程,但是还没有执行线程类的start()方法来启动线程。 2.就绪 调用线程的start()方法后,其实线程进入了就绪状态,切记,并非直接进入运行状态。 3.运行 当处于就绪状态的线程获得时间片后,就进入了运行状态。 4.挂起 挂起是我认为在线程运行状态中最复杂的一个环节,它分为睡眠,等待(又包括超时...

qq_32441071的博客 1535

【时空图神经网络 & 交通】相关模型3:STFGNN | 空间-时间依赖性 | 基于数据驱动的方法来生成“时间图” | 时空融合图模块,门控卷积模块 | 动态时间规整 | 顶会文章解析

STFGNN(时空融合图神经网络)在交通流量预测中的优势主要体现在以下几个方面:首先,它提出了一种数据驱动的方法生成“时间图”,弥补了传统空间图可能无法反映的某些相关性。其次,STFGNN通过并行处理不同时间段的空间图和时间图,有效地学习隐藏的时空依赖关系。此外,它将融合图模块与门控卷积模块整合到一个统一层中,通过层层堆叠处理长序列,进一步增强了模型的表达能力。实验结果表明,STFGNN在多个交通数据集上表现出色,优于其他基准方法,展示了其在实际应用中的强大潜力。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 383

kvm线程-007-线程状态-THREAD_SUSPENDED,THREAD_DEAD

本文介绍线程状态THREAD_SUSPENDED,THREAD_DEAD的使用。 THREAD_SUSPENDE 该状态设置的地方为: startThread,该方法在kvm线程-006-线程状态-THREAD_ACTIVE 中有介绍 suspendThread,该方法的代码如下: void suspendThread(void) { // 1. 如果CurrentThread 为null...

qq_26000415的博客 5645

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

RT-Thread线程的状态

RT-Thread线程的状态 1.线程就绪表的初始状态。 此时线程的状态还处于初始态,线程刚创建还没开始运行时就处于初始状态;在初始状态下,线程不参与调度。此状态在 RT-Thread 中的宏定义为 RT_THREAD_INIT。此时就绪表各优先级成员均指向自身(这里prio_table[]数组下表即是线程的优先级)。相应地,线程就结优先级组rt_thread_ready_priority_gro...

glen_cao的博客 2597

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

浅谈Thread类及常见方法与线程的状态(多线程编程篇2)

如何简单的去使用jconsloe 查看线程 (多线程编程篇1)_如何查看weblogic当前线程-优快云博客距离笔者发布本系列第一篇博客已过去一月有余,本篇博客,笔者将继续介绍已经整理学习好的内容既帮助未来的自己复习,也为正在阅读的你提供参考和思考.本篇博客的内容正如标题所示,笔者主要将介绍一下内容1.Thread类,并通过举例演示常见方法2.向大家介绍线程的状态.愿我们一起进步!

cjejwe的博客 2064

Java--线程Thread生命周期的几种状态相互转换及常用API方法说明

❤️‍大家好,我是贾斯汀,今天主要聊一聊关于线程的瓜!❤️‍ 先来看一下线程这张图线程的几种运行状态之间运行流程: 看不懂没关系,慢慢来学习,往下学习来继续了解一下~ 什么是线程? 线程是进程的一部分,是程序执行中的一条执行路线; 进程就是指程序在其自身地址空间的一次执行活动,是程序独立运行的基本单位; 一个进程可以包含多条线程,一个条线程对应一个进程中的一条执行路线。 线程的几种创建方式? 主要由四种方式创建线程 具体每一种创建方式说明及代码实现如下: /** * 创建Thread线

JustinQin 2万+

线程的状态:想更了解线程的状态吗?

本文详细介绍了Java线程的6种状态及其转换关系。主要内容包括:1)通过代码示例演示了NEW(线程创建未启动)、RUNNABLE(运行/就绪)、TERMINATED(终止)三种状态;2)使用sleep方法展示了TIME_WAITING(限时等待)状态;3)通过join方法演示了WAITING(无限等待)状态;4)结合synchronized锁展示了BLOCKED(锁等待)状态。文章还对比了Java线程状态与系统TCB的关系,并介绍了状态转换的关键方法(start/sleep/join/wait)。最后总结指

2301_80293365的博客 2085

Thread类常用方法 线程状态

介绍了Thread类的五种常用方法和四种线程状态

linxingmai的博客 1144

Thread类创建线程和线程状态

Thread类的使用,线程状态

m0_73730252的博客 991

Java多线程之线程的创建与Thread类的使用

本篇文章介绍java多线程中Thread类的使用以及有关线程对象创建和常用方法。

未见花闻的博客 3170

[Thread,Thread State]线程,线程状态

线程 线程 & 进程 学过操作系统的基本都知道这个词。一开始出现的是进程,进程是操作系统中分时系统的一个基本运作单位。但是后来由于系统设计的升级,对进程又进行了划分,所以出现了线程。 进程可以包含多个线程,至少一个。这样就出现了线程来执行用户需要执行的命令。区别总结一下: 进程是一段正在执行的程序,是资源分配的基本单元,而线程时CPU调度的基本单元。 进程间相互独立,进程与进程之间不能共享资源,一个进程至少有一个线程,同一个进程的各线程共享整个进程的资源(寄存器,堆栈,上下文)。 线程的创建和

Cui's Blog 808

Thread类和线程状态

Thread类和线程状态

qq_63918780的博客 1885

kvm线程-005-线程状态-THREAD_JUST_BORN

在kvm内部定义了线程状态,如下: enum { THREAD_JUST_BORN = 1, /* 还没有启动*/ THREAD_ACTIVE = 2, /* 当前正在运行,或者在等待运行的队列中*/ THREAD_SUSPENDED = 4, /* 等待monitor或者alarm */ THR...

qq_26000415的博客 5451

多线程并发 (二) 了解 Thread

章节:多线程并发 (一) 了解 Java 虚拟机 - JVM多线程并发 (二) 了解 Thread多线程并发 (三) 锁 synchronized、volatile多线程并发 (四) 了解原子类 AtomicXX 属性地址偏移量,CAS机制多线程并发 (五) ReentrantLock 使用和源码 通过上一篇多线程并发 (一) 了解 Java 虚拟机 - JVM了解了java 虚拟机的构成...

王项雨 的博客 7823

java多线程编程_Thread类_线程状态的理解

本节目标 学习java多线程编程! 了解java中的Thread类的基本使用! 掌握Thread创建线程对象的5种方法 学习Thread类中的一些常用属性和方法! Thread类 我们知道操作系统中的线程是并发执行的! 而Thread类是java给我们提供的一个类,通过Thread可以实现java并发编程!Thread类可以视为java标准库提供的API 创建好的Thread实例和操作系统的线程一一对应!!! Thread是在java.lang包下的类无需导入!!! 了解并发编程 publi

bug郭的博客 1644

【多线程】Thread多线程(内含创建线程、Thread常见方法、线程的状态)

引入进程这个概念,最主要的目的是为了解决“并发编程"这样的问题。多进程编程已经可以解决并发编程的问题了,能很好的利用cpu多核资源了,但是进程太重了。进程太重了(消耗资源多&速度慢)创建、销毁、调度一个进程,开销比较大。说进程重,主要就是重在“资源分配/回收”上。为了解决上述问题,线程应运而生,线程也叫做"轻量级进程"。解决并发编程问题的前提下,让创建,销毁,调度的速度更快一些;线程为啥更"轻",把申请资源/释放资源的操作给省下了,创建效率就更高了。

小黑屋的黑小子的博客 1339
上一篇: 并发编程之LockSupport源码分析及简单使用
下一篇: VBA实现Excel模块筛选高级应用场景!
饶艳辉
博客等级 码龄15年 20粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值