java029:线程的四种状态(准备,运行,阻塞,死亡)和线程的调度

本文围绕Java线程展开,介绍了线程的四种状态,包括准备、运行、阻塞和死亡状态,强调强制死亡会导致数据不安全,stop方法已过时,可用Thread.interrupted()替代。还提到线程调度,设置优先级时,MAX_PRIORITY为10,MIN_PRIORITY为1,默认是5,优先级高抢到线程概率大。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,线程的四种状态:
准备状态:就是新建状态new的时候
运行状态:处于运行状态的线程具备抢占cpu的资格,至于能不能抢到,能不能正在运行还不一定!
阻塞状态:该状态的线程不具备抢占cpu的资格
死亡状态
1:自然死亡就是代码从头到位全部执行完毕
2:强制死亡就是调用了stop方法
在这里插入图片描述
注意:在准备和运行期间,可以设置线程的优先级

在这里插入图片描述
需要注意:强制死亡太二了,太暴力了,说死就死,没有一点征兆。也就是强制死亡执行后,不关你的数据完整输出没,就直接死亡,导致数据会不安全,就比如你在给对方转账,你转出去了,然后强制死亡,后面的数据不再执行,导致对方收不到钱。
如下结果,ABCD还没有输完,只输到A,就强制死亡,数据不安全。
在这里插入图片描述
它和控制台的停止程序不一样,停止程序是输到哪不管,直接停止。就比如C输到一半,然后直接停止
在这里插入图片描述
所以stop已经过时了,以后写程序不能再用它,学它是因为前人写程序用了它
替代方案:Thread.interrupted()是否被打扰,默认返回false。
t1.interrupt();打扰一下,表示下次Thread.interrupted()就返回true。
在这里插入图片描述
在这种情况下,即使程序强制死亡,死亡前也会输出完整的数据,保证了数据的安全性
阻塞状态:sleep(3000)睡3秒后抢占再线程
在这里插入图片描述
结果:3秒后输出1到10,在3秒内它处于阻塞状态
二,线程的调度:(设置线程的优先级)
设置线程优先级的时候,MAX_PRIORITY的优先级为10,MIN_PRIORITY的优先级为1,如果不设置,默认都是5。

Thread.currentThread().getName()//获取线程的名字
Thread t1=new Thread(a,"我的优先级高");//把线程名字改成“我的优先级高”

在这里插入图片描述
需要注意:优先级高并不是说会优先输出,而是抢到线程的概率大而已。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值