当前位置:网站首页>线程的状态
线程的状态
2022-08-04 08:01:00 【LIn_jt】
线程的状态
本文将以图文的形式来对线程的状态进行说明。(要注意的是,这里我们说明的是jvm所描述的线程六种状态)请看下图:>
这是java帮助手册中给出的线程六种状态,我们一个一个来对其进行介绍。
1.new 状态
new状态是我们线程已经创建了,但是还没有start的一种状态。也就是说,我们给线程安排好了工作,但是还没有执行,用代码来看大概是这样的:
注意看,这里我们将线程t1创建好,但是并没有调用start方法去执行它,此时线程的状态,就处在new状态,我们让程序运行起来:>
2.RUNNABLE状态
从NEW状态到RUNNABLE状态只需要线程调用start方法。要注意的是:
线程调用start方法不一定立即到cpu上面执行,它需要在就绪队列中等待操作系统的调度。
笼统的说,RUNNABLE状态描述一个线程正在运行或已经在就绪队列,随时可以到CPU上面去执行。
在一些书上,线程的RUNNABLE状态也可以细分为两种状态,一种是READY状态,一种是RUNNING状态。
READY状态即表示线程正在就绪队列中等待调度,RUNNING状态则表示了线程正在CPU上运行。
请看下面代码:>
这里我们让程序运行起来:>
可以看到线程已经转变为Runnable状态了。
3.TERMINATED状态
Terminated状态代表线程已经执行完成,这里我们仍用代码来演示一下:>
这里我们在前面的基础上调用了join方法,等待线程t1执行完成后,我们再去打印线程t1的状态。我们来看一下代码运行的结果
4.BLOCKED状态
BLOCKED意味着线程阻塞,而且是在竞争锁的过程中导致的阻塞,这里涉及到了关键字synchronized。
5.TIME_WAITING状态
TIME_WAITING状态也意味着线程进入阻塞状态,但这里涉及到的方法是sleep,当一个线程调用sleep方法时,此时该线程就会进入TIME_WAITING状态,请看以下代码:>
这里可以看到我们在线程t1中调用了sleep方法,然后我们在主线程中先休眠再去打印t1的状态,此时我们可以得到:>
6.WAITING状态。
WAITING状态也是线程的一种阻塞状态,主要是由于线程调用了wait方法而进入的一种阻塞状态。请看以下代码:>
在这里我们创建了两个线程,一个线程t1,一个线程t2,并且在线程t1中调用了wait方法,此时线程t1进入WAITING状态。在等待我们输入一个值之后,t2线程才对t1的wait进行通知唤醒。我们运行程序可以得到
以上就是我们线程的六种状态了,我们画一个图来进行总结。
谢谢观看!!。
边栏推荐
- 安装GBase 8c数据库的时候,报错显示“Resource:gbase8c already in use”,这怎么处理呢?
- FCN - the originator of semantic segmentation (based on tf-Kersa reproduction code)
- powershell和cmd对比
- 字节跳动岗位薪酬体系曝光,看完我真的酸了...
- babylon 里面加gltf 模型
- 使用腾讯云发送短信 ---- 手把手教你搞定所有步骤
- JNI学习1.环境配置与简单函数实现
- RHCSA第五天
- 分布式计算实验4 随机信号分析系统
- 在安装GBase 8c数据库的时候,报错显示“Host ips belong to different cluster”。这是为什么呢?有什么解决办法?
猜你喜欢
GIS数据与CAD数据间带属性字段互相转换还原工具,解决ArcGIS等软件进行GIS数据转CAD数据无法保留属性字段问题
unity2D横版游戏教程7-敌人AI死亡效果
字符流与字节流的区别
Typora_Markdown_图片标题(题注)
MYSQL JDBC图书管理系统
C语言指针
The national vocational skills contest competition of network security emergency response
全国职业院校技能大赛网络安全竞赛之应急响应
智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
redis---分布式锁存在的问题及解决方案(Redisson)
随机推荐
int *p = &a、p = &a、*p = a的正确理解
LeetCode 97. 交错字符串
并查集介绍和基于并查集解决问题——LeetCode 952 按公因数计算最大组件大小
两日总结六
串口监听 - 软件方案
【剑指Offer】二分法例题
Lightweight Backbone VGNetG Achieves "No Choice, All" Lightweight Backbone Network
babylon 里面加gltf 模型
The school to apply for link
DWB主题事实及ST数据应用层构建,220803,,
占位,稍后补上
CSDN21天学习挑战赛——day1 正则表达式大总结
解决:Hbuilder工具点击发行打包,一直报尚未完成社区身份验证,请点击链接xxxxx,项目xxx发布H5失败的错误。
【学习笔记】AGC036
GIS数据与CAD数据间带属性字段互相转换还原工具,解决ArcGIS等软件进行GIS数据转CAD数据无法保留属性字段问题
【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解
第一次用postgreSQL,想装主从,用的12.7 tar.gz版本。安装好后没在 share目录下找到样例配置recovery.conf.sample,是安装方式不对,还是路径不对?
华为设备配置VRRP与路由联动监视上行链路
金仓数据库KingbaseES客户端编程接口指南-JDBC(10. JDBC 读写分离最佳实践)
C语言strchr()函数以及strstr()函数的实现