java中多线程的几种状态

Java 解析线程的几种状态详解 从操作系统层面上,任何线程一般都具有五种状态,即创建、就绪、运行、阻塞、终止。在程序中用构造方法创建一个新线程时,如new Thread(),该线程就是创建状态,此时它已经有了相应的内存空间和其它资源,但是还没有开始执行。新建线程对象后,调用该线程的start()方法就可以启动线程。当线程启动时,线程就进入就绪状态(runnable)由于还没有分配CPU,线程将进入线程队列排队,等待CPU服务,这表明它已经具备了运行条件。当系统挑选一个等待执行的Thread对象后,它就会从等待状态进入执行状态。 阅读详情

总结:新建状态、就绪状态、运行状态、阻塞状态、死亡状态

新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();
就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;
运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;
阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才有机会再次被CPU调用以进入到运行状态。根据阻塞产生的原因不同,阻塞状态又可以分为三种:
1、等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;
2、同步阻塞 – 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;
3、其他阻塞 – 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。


join:让一个线程等待另一个线程完成才继续执行。如A线程线程执行体中调用B线程的join()方法,则A线程被阻塞,直到B线程执行完为止,A才能得以继续执行。
sleep : 让当前的正在执行的线程暂停指定的时间,并进入阻塞状态。在其睡眠的时间段内,该线程由于不是处于就绪状态,因此不会得到执行的机会。即使此时系统中没有任何其他可执行的线程,出于sleep()中的线程也不会执行。因此sleep()方法常用来暂停线程执行。
wait():导致当前线程等待并使其进入到等待阻塞状态。直到其他线程调用该同步锁对象的notify()或notifyAll()方法来唤醒此线程。
notify():唤醒在此同步锁对象上等待的单个线程,如果有多个线程都在此同步锁对象上等待,则会任意选择其中某个线程进行唤醒操作,只有当前线程放弃对同步锁对象的锁定,才可能执行被唤醒的线程。
notifyAll():唤醒在此同步锁对象上等待的所有线程,只有当前线程放弃对同步锁对象的锁定,才可能执行被唤醒的线程。

学Simulink--基础储能管理场景实例:基于Simulink的储能SOC均衡控制策略仿真 本文完成了基于 Simulink 的储能 SOC 均衡控制策略仿真,实现了:✅掌握并联系统 SOC 分化机理✅构建基于电流重分配的主动均衡架构✅验证均衡对系统可用容量的显著提升✅实现 SOC 偏差 < 2% 的高精度控制。 阅读详情

相关推荐

一文搞定 GitHub SSH Key:生成、配置、好处全攻略

本文详细介绍了如何配置GitHub SSH Key,实现免密安全认证。主要内容包括:SSH协议的四大优势(免密登录、安全性高、稳定省心、支持自动化);Git身份配置步骤;检查本地SSH Key;生成RSA密钥对;添加密钥到SSH代理;复制公钥到GitHub;测试连接。配置完成后,开发者可通过SSH地址克隆仓库,实现push/pull全程免密操作。该方案显著提升Git使用效率,同时保障安全性,是开发者必备技能。

qq_62904883的博客 960

多线程(下)

线程的状态 新生状态 : 用new关键字创建一个线程,该线程就处于新建状态 就绪状态 : 调用start()方法后线程处于就绪状态,具备了运行的条件,但是没有分配到CPU,处于线程的就绪状态 运行状态 : 处于就绪状态的线程获得了CPU的执行权,开始执行run方法中的线程执行体,该线程就处于运行状态。 阻塞状态 1.当线程调用了一个阻塞式的IO方法时,该线程就会进入阻塞状态。 2.当线程调

eternally__的博客 237

jetson nano网络配置(有线、无线、USB)

注意:本节内容使用Jetson nano B01 版本或Jetson nano ALT 版本安装方式相同,在安装无线网卡等设备时,由于线材和设备比较脆弱,需要轻拿轻放,接口连接不上时,需要重新对准接口在进行连接,不要强行连接。Jetson nano 需要连接网络来进行更多的操作,本节就来讲解Jetson nano 的三种网络连接方法。有线:我们可以使用网线连接Jetson nano 的RJ45 接口,实现联网。

m0_73841621的博客 1万+

java多线程的几种状态

Java线程既可以创建,也可以销毁,所以线程是有生命周期的,而线程的生命周期就可以用线程的六种状态来描述。 从Thread类的源码中可以看出线程一共有6种状态: 这六种状态分别是: 1. New:初始状态,线程被创建,没有调用start() 2. Runnable:运行状态,Java线程把操作系统中的就绪和运行两种状态统一称为“运行中” 3. Blocked:阻塞,线程进入等待状态,...

lx_Frolf的博客 1万+

Star CCM+ 202206 (17.04) 详细安装步骤

StarCCM+ 17.04 安装包和详细安装步骤

薛定谔的alpha狗 3万+

Python 爬虫教程:财经新闻实时抓取(最新资讯 + 关键词提取)

在当今信息爆炸的时代,财经新闻的实时获取对于投资者、研究人员以及普通大众来说都具有重要的价值。通过 Python 爬虫技术,我们可以高效地抓取财经新闻,并提取其中的关键信息,以便更好地进行数据分析和决策支持。本文将详细介绍如何使用 Python 编写一个财经新闻实时抓取系统,并结合关键词提取技术,帮助读者快速掌握 Python 爬虫的核心技能。

yansideyucsdn的博客 1051

Java多线程状态的几种状态

Java多线程状态 共有6种状态 New 线程被创建出来时的状态 RUNNABLE 线程被调用了start(),正在运行状态,即表示Running状态和Ready状态。 BLOCKED 等待监视锁,这个时候线程被操作系统挂起。当进入synchronized块/方法或者在调用wait()被唤醒/超时之后重新进入synchronized块/方法,锁被其它线程占有,这个时候被操作系统挂起,状态为阻塞状态。 WAITING 无条件等待,当线程调用wait()/join()/LockSupport.

weixin_44197026的博客 231

IEC61850规约客户端软件开发实战(第六章)

IEC 61850标准中的GOOSE(Generic Object Oriented Substation Event,面向通用对象的变电站事件)功能是变电站自动化系统的核心通信机制,主要用于实现智能电子设备(IED)间高可靠性、低延时的实时信号传输。本章简述其核心功能与技术特点。

半青年的博客 1780

java多线程几种状态_java多线程的几种状态

java线程状态在Thread中定义,源码中能看到有个枚举State,总共定义了六种状态:NEW: 新建状态,线程对象已经创建,但尚未启动RUNNABLE:就绪状态,可运行状态,调用了线程的start方法,已经在java虚拟机中执行,等待获取操作系统资源如CPU,操作系统调度运行。BLOCKED:堵塞状态。线程等待锁的状态,等待获取锁进入同步块/方法或调用wait后重新进入需要竞争锁WAITING...

weixin_39869593的博客 771

复现基于混频因子模型的GDP即时预测方法

基于混频因子模型的GDP即时预测方法复现 本文复现了混频因子模型(MIDAS)在GDP即时预测中的应用。该方法整合7个月度宏观经济变量(工业增加值、CPI、PMI等)与季度GDP数据,通过状态空间模型实现高频预测。技术实现包括:1)使用PCA提取潜在共同因子;2)构建状态空间模型处理混频数据;3)通过卡尔曼滤波进行参数估计。实证结果显示模型预测效果良好(测试集R²=0.82),其中工业增加值对因子1贡献最大(0.82),CPI对因子2贡献显著(0.78)。该方法为决策者提供了更及时的季度GDP估算。

huanghm88的专栏 603

英飞凌Tricore问题排查01_Det/Reset/Trap排查宝典

软件跑飞进Det或发生Reset或进Trap了,怎么查?有固定套路可以follow吗?英飞凌Tricore又有哪些专门的定位办法?本篇为您娓娓道来。

initiallizer的博客 4417

Java 多线程的几种状态

Java中的线程的生命周期大体可分为5钟状态 新建(NEW): 新创建了一个线程对象。 可运行(RUNNABLE): 线程对象创建后,其他线程(比如main线程) 调用了该线程的 start() 方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取 cpu 的使用权。 运行中(RUNNING): 可运行状态(runnable) 的线程获得了cpu 时间片,执行程序代码。 阻塞(BLOCKED): 阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了 cpu 时间片(timeslice),

weixin_46448719的博客 1667

RTK_ROS_导航(4):接入move_base

现在我们要将之前的数据接入到Move_base中,使得机器人能够根据Map上的终点进行导航,并且实现避障效果如下图。

旋风小短腿 1948

【多线程基础】 Java 线程的几种状态

线程共有6种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。分别对应于:新建、运行、阻塞、等待、带超时的等待、终止。

书生-w的博客 2万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java多线程中几种状态的解释

线程被创建后,有一个生命周期,下图是线程的生命周期详解。   java apijava.lang.Thread.State这个枚举中给出了六种线程状态,分别是: 线程状态 导致状态发生条件 NEW(新建) 线程刚被创建,但是并未启动。还没调用start方法。 Runnable(可 运行) 线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操 作系统处理器。 Blocked(锁阻 塞) 当一个线程试图获取...

u012343977的博客 321

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

从源码注释看java多线程的几种状态,以及几种状态的模拟

概述 java定义的多线程主要有如下几种状态:创建、运行、阻塞、等待、限时等待、结束 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

大胡子_biu 338

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java之多线程,从线程的几种状态说起

最近赶着金三银四的风潮,我也顺应了时代一次,果断辞去工作,加入了找工作的大军当中,面来面去,发现大家都对java多线程这块比较感兴趣,于是在工作安定下来之后,我决定重新梳理一下多线程的知识,当做是一个学习复习笔记,看到的朋友,也请大家指出疏漏之处,在此谢过大家了。好了,话不多说,开始正题。 线程的几种状态: 新生:用关键字new创建一个线程 就绪:线程创建后,其它线程调用对象的start()...

不试一下你怎么知道自己有多强?最不像程序员的程序员的专栏 274

java 线程的状态_java多线程的几种状态

java线程状态在Thread中定义,源码中能看到有个枚举State,总共定义了六种状态:NEW: 新建状态,线程对象已经创建,但尚未启动RUNNABLE:就绪状态,可运行状态,调用了线程的start方法,已经在java虚拟机中执行,等待获取操作系统资源如CPU,操作系统调度运行。BLOCKED:堵塞状态。线程等待锁的状态,等待获取锁进入同步块/方法或调用wait后重新进入需要竞争锁WAITING...

weixin_36147585的博客 112

多线程出bug不知道如何调试?java线程几种常见状态

当你的多线程代码结构很复杂的时候很难找出bug的原因所在,此时我们可以使用getState()方法获取该线程当前的状态,通过观察其状态是阻塞了还是因为没有启动等原因导致的。

to_mountain的博客 396

【多线程】Java线程的几种状态详解

观察线程的所有状态,线程状态的意义和线程状态转移的条件,线程状态一共有几种 ,每种状态表示的含义,状态之间的切换条件

ZXT的博客 1137

java线程几种状态_Java中多线程的六种状态详解

在我们的Thread类中,我们可以看到多线程有六种状态。NEW:初始状态 RUNNABLE:运行状态 BLOCKED:阻塞状态 WAITING:等待状态 TIMED_WAITING:超时等待状态 TERMINATED:终止状态六种状态之间的转化关系如下:1、NEW 表示线程创建成功,但没有运行,在 new Thread 之后,没有 start 之前,线程都处于 NEW 状态; 2、RUNNABLE...

weixin_39628342的博客 236

多线程——线程的几种状态 (Java API版)

以前学习操作系统这门课程的时候,对线程状态的学习是比较粗略的,仅限于表面的了解,在后续学习和使用的过程中, 我发现自己之前的认知与Java api中定义的线程状态是有出入的,在使用过程中也会有很多误解, 所以按照java.lang.Thread.State中的详细定义和说明,进行了如下整理,作为自我总结和学习。 根据Java api,Java中线程一共有如下6种状态,即NEW、RUNNABL

gxx_csdn的博客 1588

Java多线程的几种状态 结束

线程的五种状态 相关方法: 1线程结束 1.建议线程正常停止----》利用次数,不建议死循环 2.建议使用标志位 3.不要使用stop、destroy 等 或者JDK不建议使用的方法 代码实现 package Thread_func; /* 1.实现Runnable */ public class TestStop implements Runnable { // 1.设置一个标志位 boolean flag=true; @Override public void r

qq_42146047的博客 180

Java多线程:线程的几种基本状态

一、线程的基本状态 线程基本上有5种状态,分别是:NEW、Runnable、Running、Blocked、Dead。 1)新建状态(New) 当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 2)就绪状态(Runnable) 当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行; 3)运行状态(Running)

qq_40902067的博客 1064
上一篇: Java虚拟机的类加载机制
下一篇: hashtable和HashMap对null key 、null value 的支持
鹤野云间
博客等级 码龄9年 4粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值