线程生命周期(状态)_线程生命周期中正确的状态是-程序员宅基地

技术标签: java  Java多线程  多线程  

当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。 在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞 (Blocked)和死亡(Dead)5种状态。尤其是当线程启动以后,它不可能一直"霸占"着CPU独自 运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换 。

)

1.新建状态(NEW)

当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配 内存,并初始化其成员变量的值 。

2.就绪状态(RUNNABLE)

当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和 程序计数器,等待调度运行。

3.运行状态(RUNNING)

如果处于就绪状态的线程获得了CPU,开始执行run()方法的线程执行体,则该线程处于运行状态。

4.阻塞状态(BLOCKED)

阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。 直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice 转到运行(running)状 态。阻塞的情况分三种:

(1)等待阻塞 ( o.wait-> 等待对列 )

运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue) 中。

(2)同步阻塞 (lock-> 锁池 )

运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线 程放入锁池(lock pool)中。

(3)其他阻塞 (sleep/join)

运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时, JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O 处理完毕时,线程重新转入可运行(runnable)状态。

5.线程死亡(DEAD)

线程会以下面三种方式结束,结束后就是死亡状态。

  • 正常结束: run()或call()方法执行完成,线程正常结束。
  • 异常结束: 线程抛出一个未捕获的Exception或Error。
  • 调用 stop: 直接调用该线程的stop()方法来结束该线程— 该方法通常容易导致死锁,不推荐使用。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/k_young1997/article/details/106969840

智能推荐

猫儿PDF-Word格式转换经验谈_pdf转换成分word之后叠加怎么办?-程序员宅基地

文章浏览阅读1.2k次。猫儿我最近工作遇到了万恶的格式转换问题PDF-Word。众位看官抢着说“这不是很简单嘛?”“你就用XX软件就可以了嘛!”事实果真如此么?今天准备了10款软件和1份PDF文档进行测评。 1.ABBYY FineReader11一个知名的俄罗斯ORC软件,拥有高超的识别技术。OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数_pdf转换成分word之后叠加怎么办?

hdu 3452 Bonsai(最小割)-程序员宅基地

文章浏览阅读912次。题意:给出一棵树,每条边又

Docker将从Kubernetes中移除,我该怎么办?_docker 删除kuboard-程序员宅基地

文章浏览阅读618次。文章目录Docker将从Kubernetes中移除,我该怎么办?对开发者而言对K8S管理员而言是真的吗?但是为什么 Docker 要被移除呢?CRI runtimescontainerdCRI-O还有一件事...CRI runtimesOCI runtimes附录一:runC 是如何工作的![在这里插入图片描述](https://img-blog.csdnimg.cn/20210429154504847.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5na_docker 删除kuboard

英特尔发布重大技术架构的改变和创新,面向CPU、GPU和IPU_处理器架构从哪些方面改进-程序员宅基地

文章浏览阅读4.2k次。在2021年英特尔架构日上,英特尔公司高级副总裁兼加速计算系统和图形事业部总经理Raja Koduri携手多位英特尔架构师,全面介绍了两种全新x86内核架构的详情;英特尔首个性能混合架构,代号“Alder Lake”,以及智能的英特尔硬件线程调度器;专为数据中心设计的下一代英特尔至强可扩展处理器Sapphire Rapids;基础设施处理器(IPU);即将推出的显卡架构,包括Xe HPG微架构和Xe HPC微架构,以及Alchemist SoC, Ponte Vecchio SoC。这些新架构将为._处理器架构从哪些方面改进

PointConv:基于3D点云的深度卷积网络_点云不能用卷积网络吗-程序员宅基地

文章浏览阅读3.8k次。原文首发于微信公众号「3D视觉工坊」——PointConv:基于3D点云的深度卷积网络本文出自知乎:https://zhuanlan.zhihu.com/p/69597887?utm_source=wechat_session&utm_medium=social&utm_oi=1135649954939883520原文:PointConv: Deep Convol..._点云不能用卷积网络吗

遥感影像镶嵌拼接_qmosaic-程序员宅基地

文章浏览阅读8.6k次,点赞3次,收藏34次。软件下载地址:https://pan.baidu.com/s/1dt0yDUsAork9LnLnZTwCgw需要百度网盘下载密码,留言邮箱地址。或联系联系QQ:1257396288​首先加载需要处理的影像,如下所示:然后点击菜单栏中的“生成镶嵌线”,具体参数设置如下:1.自动生成镶嵌线点击“生成镶嵌线”按钮,弹出如下对话框:处理方式:分..._qmosaic

随便推点

ios底部安全距离-程序员宅基地

文章浏览阅读6.9k次,点赞4次,收藏14次。背景: 目前公司开发商城小程序,对于iOS要设置底部安全距离,否则底部会被黑条遮挡技术方案:1、苹果官方推荐:使用env(),constant()来适配,env()和constant(),是IOS11新增特性,Webkit的css函数,用于设定安全区域与边界的距离,有4个预定义变量: safe-area-inset-left:安全区域距离左边边界的距离 safe-area-inset-right:安全区域距离右边边界的距离 safe-area...

第十五课.马尔科夫链蒙特卡洛方法_马尔可夫链是哪门课-程序员宅基地

文章浏览阅读438次。目录M-H采样Metropolis-Hastings采样原理M-H采样步骤Gibbs方法Gibbs核心流程Gibbs采样的合理性证明Gibbs采样实验在第十四课中讲述了马尔科夫链与其稳态的性质,本篇讨论基于马尔科夫链蒙特卡洛(MCMC)方法的采样。M-H采样Metropolis-Hastings采样原理我们的目标分布是p(z)p(z)p(z),同时我们手里有一个便于随时间进行遍历的马尔科夫链,其状态转移矩阵为QQQ。为了便于在马尔科夫链上随时间进行状态转移,这里的矩阵QQQ设计为:Qij=P(x_马尔可夫链是哪门课

mac os 快捷键_mac扩展模式快捷键 site:blog.csdn.net-程序员宅基地

文章浏览阅读550次。要使用键盘快捷键或组合键,您可以同时按修饰键和字符键。例如,同时按下 Command 键(标有 符号的按键)和“c”键会将当前选中的任何内容(文本、图形等等)拷贝至夹纸板。这也称作 Command-C 组合键(或键盘快捷键)。许多组合键中都包含修饰键。修饰键将改变 Mac OS X 对其他按键或鼠标点按动作的解释方式。修饰键包括 Command、Control、Option、Shif_mac扩展模式快捷键 site:blog.csdn.net

mysql collation 选哪个_mysql新建数据库时的collation选择(转)-程序员宅基地

文章浏览阅读649次。转自:https://www.cnblogs.com/sonofelice/p/6432986.htmlmysql新建数据库时的collation选择(转)转自别处的文章。末尾附原文链接mysql的collation大致的意思就是字符序。首先字符本来是不分大小的,那么对字符的>, = , < 操作就需要有个字符序的规则。collation做的就是这个事情,你可以对表进行字符序的设置,也..._mysql collate选择那种号

2020-08-24_"</span><span dir=\"ltr\" style=\"font-style: norm-程序员宅基地

文章浏览阅读139次。1.1基本概念CSS(Cascading Style Sheet) 层叠样式表,为了实现页面内容和表现形式的分离。层叠的含义是可以对一个元素多次设置样式,最后的结果是多次样式叠加的结果,如果有冲突,以后面的样式为准。1.2 基本语法选择器{属性名1:属性值1;属性名2:属性值2;属性名3:属性值3;……}选择器说明该样式施加于哪些元素;属性名和属性值说明是样式内容;一般一行定义一条样式,当然也可以写在一行上,但每条样式都序号加上“;”推荐用小写命名。<_"

【观察】解读Kyligence智能数据云战略,打造新一代数据管理“底座”-程序员宅基地

文章浏览阅读249次。申耀的科技观察读懂科技,赢取未来!众所周知,随着云计算、大数据、人工智能、物联网等新技术在各行各业更加广泛的普及与应用,在催生越来越多数据量产生的同时,也让数据的管理和价值挖掘变得愈加复杂..._kyligence

推荐文章

热门文章

相关标签