从JDK文档看 Java 的线程状态究竟有几种?

Windows中的未处理异常 上一篇文章Windows对异常的管理详细介绍了Windows中对异常的分发和处理过程。 我们知道,Windows会给每个异常最多两轮被处理的机会: 第一轮:先尝试发给调试器,如果调试器没有处理,则遍历并依次调用异常处理器。如果一个处理器返回EXCEPTION_CONTINUE_EXECUTION,则表示它已经处理了异常,并让系统恢复执行因为异常而中断的代码;如果返回EXCEPTION_CONTINUE_SEARCH,则表示它不能处理该异常,并让系统继续寻找其他的异常处理器。 第二轮:再次发给调试器,如果还 阅读详情

就网上的资料来说,存在好几种说法:

第一种:新建、就绪、运行中、阻塞、死亡

一种是:
线程的几种状态
线程在一定条件下,状态会发生变化。根据线程的几种状态这篇文章,线程一共有以下几种状态:
1、新建状态(New):新创建了一个线程对象。
2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权,即在就绪状态的线程除CPU之外,其它的运行所需资源都已全部获得。
3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。
4、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:
①. 等待阻塞:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。进入这个状态后,是不能自动唤醒的必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒。
②. 同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入“锁池”中。
③. 其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时,或者I/O处理完毕时,线程重新转入就绪状态。
5、死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

第二种就是 新建、可运行、等待、计时等待、和终止

请看JDK中的解释

https://docs.oracle.com/javase/8/docs/api/index.html?java/lang/Thread.State.html
在这里插入图片描述
在这里插入图片描述

吃透Java并发三:线程的阻塞与唤醒 一、阻塞与唤醒 线程的阻塞和唤醒在多线程并发过程中是一个关键点,当线程数量达到很大的数量级时,并发可能带来很多隐蔽的问题。如何正确暂停一个线程,暂停后又如何在一个要求的时间点恢复,这些都需要仔细考虑的细节。Java为我们提供了多种API来对线程进行阻塞和唤醒操作,比如sleep、suspend与resume、wait与notify以及park与unpark等等。 二、sleep()方法 控制线程阻... 阅读详情

相关推荐

Gazebo仿真UUV水下机器人:从环境搭建到避障算法实战

本文详细介绍了使用Gazebo仿真平台进行UUV水下机器人开发的全流程,涵盖从环境搭建、uuv_simulator配置、传感器集成到核心避障算法实战。通过搭建水下仿真实验室并实现基于激光雷达数据的反应式避障算法,为水下机器人算法验证与开发提供了高效、低成本的解决方案。

weixin_28840591的博客 265

线程发生阻塞,怎么唤醒线程?

有4中阻塞情况,对应的解决办法分别是: 1. 执行 sleep(int millsecond)方法,使当前线程休眠,进入阻塞状态。 ...

m0_51697147的博客 445

让 AI 自己“画施工图”——基于扩散模型的智能 CAD 管线生成

AI驱动CAD管线设计革命:Layout2CAD实现30秒自动化出图 针对设计院70%时间耗费在管线绘制的问题,研究团队基于Stable Diffusion开发了Layout2CAD系统,实现建筑草图到DWG施工图的智能转换。该系统采用三阶段流程:语义分割建筑底图→扩散生成多通道Heatmap(含管径/标高信息)→矢量化输出DWG实体,结合129M参数的多模块模型(Diffusion UNet+GraphRefiner)及规范判别器,确保1mm精度并自动满足GB50015-2019标准。

qq_74383080的博客 2014

怎么唤醒一个阻塞的线程

如果线程是因为调用了wait()、sleep()或者join()方法而导致的阻塞,可以中断线程,并且通过抛出InterruptedException 来唤醒它;如果线程遇到了IO 阻塞,无能为力,因为IO 是操作系统实现的,Java 代码并没有办法直接接触到操作系统。 ...

siyuanwai的博客 843

C++新手也能搞定!Windows下Cesium-Native编译全流程(附依赖下载技巧)

本文为C++新手详细介绍了在Windows系统下编译Cesium-Native库的全流程。重点针对网络环境不佳的情况,提供了手动下载依赖库的实用技巧,并指导用户使用CMake配置、生成解决方案,最终完成编译与测试验证,帮助开发者成功构建这一处理3D地理空间数据的C++运行时库。

weixin_28839549的博客 381

Java开发的企业排班系统

Java开发的企业排班系统,用了springboot框架,人脸识别是采用百度接口的方式实现

自学网站s.jf3q.com,菜鸟的成长之路 6013

【面试】Java线程阻塞和唤醒的几种方式?

notify/notifyAll()方法只是解除了等待线程的阻塞,并不会马上释放监视器锁,而是在相应的被synchronized关键字修饰的同步方法或同步代码块执行结束后才自动释放锁。调用wait()方法后,线程将被阻塞,wait()方法将会释放当前持有的监视器锁(monitor),直到有线程调用。需要使用lock对象的newCondition()方法获得Condition条件对象(可有多个)。这里有一个许可证的概念,许可不能累积,并且最多只能有一个许可,只有1和0的区别。可实现公平锁,默认是非公平锁。

DreamSun的博客 2890

全志平台camera驱动开发(3)MIPI接口camera驱动开发

详细沟通: 请加video_D 目前开发过的allwinner平台: V5/V3/V3S/V40/T3/T7/A64等 开发过的mipi sensor: sony:imx317、imx477、imx274、imx258、imx286、imx307、imx385等 ov:ov2718、ov12895、ov2710等 ar: ar0238等 国产:gc1024、gc1034...

jzwjzw19900922的博客 9030

线程状态对应汇总(BASH ps命令、Linux内核 、Java jdk线程状态)

ps 命令 ps -l UID/PID/PPID:代表『此进程被该 UID 所拥有/进程的 PID 号/此进程的父进程 PID 』 F:代表这个进程旗标 (process flags),说明这个进程的权限,常见有: 若4 表示此进程的权限 root ; 若1 則表示此子进程仅能fork。 S:代表这个进程的状态 (STAT),主要的状态有: R (Running):该进程正在运行; S (Sl...

SUKI547的博客 682

YOLOv11涨点改进| CVPR 2026 |独家创新首发、特征融合改进篇| 引入FAAFusion傅里叶角对准融合模块,促进高低频特征融合,增强模型在小目标、密集目标检测和旋转目标检测任务高效涨点

🔥本文提出FAAFusion傅里叶角对准融合模块,用于改进YOLOv11网络模型。该模块通过在特征金字塔融合阶段对齐高低层特征的方向信息,缓解传统FPN直接融合带来的方向冲突问题。FAAFusion利用傅里叶旋转等变性原理,在频域估计主方向并进行特征对齐,显著提升了多尺度特征表达的一致性与有效性。实验表明,该方法在DOTA等遥感数据集上取得了新的最先进水平,特别适用于旋转目标检测任务。文章详细介绍了模块原理、结构优势,并提供了三种不同的YOLOv11改进配置方案和完整的核心代码实现。

Ai缝合怪、助力小伙伴高效发论文 153

12、多旋翼飞行器动力学建模与实验分析

本文探讨了多旋翼飞行器的动力学建模过程,包括使用四元数的优势、刚体运动学与动力学模型的构建,以及螺旋桨推力和扭矩对飞行性能的影响。文章还通过基础实验和分析实验研究了质量、转动惯量和螺旋桨参数对飞行状态和控制响应的影响,并结合理论分析与仿真结果总结了多旋翼飞行器的动力学特性。最后,对未来研究方向进行了展望,以提升多旋翼飞行器的性能和可靠性。

Python的专栏 208

jdk1.8线程状态源码翻译学习

目录 0.查看阅读文件介绍1.Thread线程状态1.1.State枚举描述1.2线程状态定义1.1.1NEW状态1.1.2RUNABLE状态1.1.3BLOCK状态1.1.4WAITING状态1.1.5TIMED_WAITING状态1.1.6TERMINATED状态1.2线程状态转换流程图2.心得总结 0.查看阅读文件介绍 Thread类位于rt.jar下的java.lang包中的一个类,从j...

java武林梦 865

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

并发操作之——JAVA线程常见几种状态以及相互之间的转化关系

并发操作 并发操作之——JAVA线程常见几种状态及解释 并发操作之——JAVA线程常见几种状态及解释并发操作前言一、JAVA线程有几种常见状态,分别是什么意思?创建(NEW):就绪(Runnable):运行(Running)阻塞(Blocked)等待阻塞:同步阻塞:等待(WAITING):超时等待(TIMED_WAITING):死亡(TERMINATED): 前言 并发操作之——JAVA线程常见几种状态及解释。 一、JAVA线程有几种常见状态,分别是什么意思? JDK的线程状态分6种,JVM里面9种

weixin_42397937的博客 6760

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java线程实现和线程状态

写在最前 之前写了ConcurrentHashMap,无论是1.8还是1.7,其中都会涉及锁Synchronized和ReentrantLock;锁的概念是为了解决线程安全问题;所以还是从线程开始写起。 这篇文章主要是写写Java线程的实现和线程的状态,以及上下文的概念,也有一些不完善的地方,会持续查缺补漏。 Java线程的实现 Java线程模型是基于操作系统原生线程模型的实现,在JDK中,win...

diaog的博客 1429

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

多线程 04:线程状态,线程的五大基本状态及状态转换,以及线程使用方法、优先级、守护线程的相关知识

本文讲述线程状态相关知识,包括线程的五个基本状态,线程如何进行状态转换,以及如何在程序中观察线程的状态。同时,文中介绍了几种线程使用方法,如线程停止、休眠、礼让等,还有线程优先级的设置和获取,以及守护线程的相关知识。

积累,沉淀,温故而知新 1841

JAVA线程(状态、终止、通信、封闭)

线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 线程状态 线程几种状态线程的状态在java中有明确的定义,在java.lang.Thread.State中有6种。 New:线程被创建,未执行和运行的时候 Runnable:不代表线程在跑,两种:被cpu执行的线程,随时可以被cpu执行的状态。 Blocked:线程阻塞,处于synchronized同步代码块

数据工匠记 4130

JAVA之线程生命周期(状态)

Java线程在其生命周期中会经历一系列的状态变化,这些状态反映了线程在不同阶段的行为和能力。根据Java官方文档和JDK源码中枚举的定义,Java线程主要有(新建)、(可运行/运行中)、(阻塞)、(等待)、(超时等待)、(新建)start()(可运行/运行中)start()(阻塞)(等待)notify()(超时等待)(终止):线程已完成其任务或因异常退出了run()方法。线程已经结束其生命周期,不能再被启动或执行任何操作。:线程彻底结束,系统资源被回收。可以通过isAlive()

larner的博客 1025

JVM中的线程状态

一、线程在JVM中的状态 查看线程在JVM中有哪些不同的状态,最简单的方式是查看Jdk源码的Thread.State类。以下内容来自JDK文档。在JVM中,一个线程可能处于下面的六种状态中的一种: NEW A thread that has not yet started is in this state. 没有开始执行的线程处于这种状态 RUNNABLE A thread executing in the Java virtual machine is in this state. 在JVM中执行的

qq_42449963的博客 1427

java 线程状态_Java 线程的生命周期及各阶段状态

每个事物都有其生命周期,也就是事物从出生开始到最终消亡这中间的整个过程;在其整个生命周期的历程中,会有不同阶段,每个阶段对应着一种状态,比如:人的一生会经历从婴幼儿、青少年、青壮年、中老年到最终死亡,离开这人世间,这是人一生的状态;同样的,线程作为一种事物,也有生命周期,在其生命周期中也存在着不同的状态,不同的状态之间还会有互相转换。人的生命周期在上文中,我们提到了线程通信,在多线程系统中,不同的...

weixin_39631007的博客 95

浅谈Java线程状态

本文章基于JDK8版本 从官方文档看,Java线程有6种状态,分别为NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED,在类Thread中有更详尽的对于线程状态描述,如下代码所示 /** * A thread state. A thread can be in one of the following states: * &...

Guilai1990的博客 359

Java 线程池深度指南(JDK 17+)

本文深入探讨Java线程池(JDK 17+)的最佳实践,包含16个核心章节。首先分析线程池的必要性:创建线程的硬成本(1MB栈内存、200-500ns内核切换)会导致高并发时CPU利用率下降30%+。通过对比表展示Executors工具类的风险(如OOM、线程爆炸),推荐使用ThreadPoolExecutor安全创建方式。详细解析线程池四大组件关系、工作流程及任务优先级规则,强调有界队列的重要性。提供线程池配置公式(基于CPU/IO密集型任务)和拒绝策略选择指南,包含生产环境代码示例和性能测试方法。最后给

qq_51972040的博客 720

详解JDK21新特性【虚拟线程】

虚拟线程突破传统线程瓶颈:针对平台线程的局限,虚拟线程通过轻量级实现(动态内存分配和用户态调度)显著降低资源开销,支持百万级并发;保持同步编程模型,简化高并发开发;特别适合I/O密集型场景(自动挂起释放资源)。但不适用于CPU密集型任务(依赖底层平台线程且增加调度开销)。使用方式上,通过Thread.ofVirtual()即可快速创建,兼容现有线程API。这一创新使开发者能用"一个任务一个线程"的直观方式处理海量并发,无需复杂异步改造。

Muyu1uz的博客 1498

Java的六种线程状态

在JDK中,Thread类定义了一个名为State的Enum类型,代表线程的状态,他们分别是: New,Runnable,Blocked,Waiting,Timed_Waiting,Terminated 在线程执行的过程中,这些状态会相互转换,为了比较直观的了解,我根据JDK文档画了个状态图: 接下来我们一个一个看(以下内容均根据JDK文档编写) New 当线程刚被创

Youthjack的专栏 1290

java线程生命周期_Java 线程的生命周期及各阶段状态

每个事物都有其生命周期,也就是事物从出生开始到最终消亡这中间的整个过程;在其整个生命周期的历程中,会有不同阶段,每个阶段对应着一种状态,比如:人的一生会经历从婴幼儿、青少年、青壮年、中老年到最终死亡,离开这人世间,这是人一生的状态;同样的,线程作为一种事物,也有生命周期,在其生命周期中也存在着不同的状态,不同的状态之间还会有互相转换。人的生命周期在上文中,我们提到了线程通信,在多线程系统中,不同的...

weixin_35714577的博客 585

Java线程的状态

java线程常见的基本状态有哪些,这些状态分别是做什么的多线程常用的方法转换流程图 java线程常见的基本状态有哪些,这些状态分别是做什么的 JDK的线程状态分6种,JVM里面9种,我们一般说JDK的线程状态。 常见的5种状态: 创建(NEW):生成线程对象,new Thread(),但是并没有调用该对象start() 就绪(Runnable):当调用线程对象的start()方法,线程就进入就绪状态,但是此刻线程调度还没把该线程设置为当前线程,就是没获得CPU使用权。 如果线程运行后,从等待或.

放羊的砍柴人 271
上一篇: tensorflow初试:使用多层感知机预测MNIST数字
下一篇: java 线程池总结
Fly_TheWind
博客等级 码龄11年 53粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值