总结记录一下线程的yeild方法和sleep方法的区别

本文深入探讨了Java中线程的yeild方法与sleep方法的区别,详细解析了两者的使用场景及特点。yeild方法使线程回到就绪状态,允许其他线程运行,而sleep方法使线程进入阻塞状态,可设定恢复时间。

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

一、前段时间面试被问到了线程的yeild方法和sleep方法的区别,很遗憾没能回答出个所以然,只能简单的说下,两者都会使得调用的线程停止,然后sleep可以设置固定的时间,yeild则没有。一阵尴尬,后面给了点提示说到了线程的优先级,但是还是不知道,,,,。

二、后面自己总结了一下原因,首先yeild方法用的太少,第一印象只停留在可以使线程停掉,更多用到的还是sleep,没有去比较两者两者的差别。再一个肯定就是学艺不精了,害。

三、记录一下现在对两者的区别的理解:

     1、sleep方法:sleep方法有一个或者两个参数,可以指定一个毫秒数或一个毫秒数一个纳秒数来使得调用线程暂时停止执行,进入阻塞状态;sleep方法是静态方法,可以通过Thread直接调用,线程睡眠时间到了后会自动再次恢复运行,再一个就是sleep方法调用会抛出一个InterruptedException。

      2、yeild方法:可以确定的第一点这个方法没有参数,是静态方法,可以使得调用的线程进入就绪状态,最重要的一点就是会允许其他优先级较自己高的线程或同等优先级的线程进入运行,但是系统也可能忽略这个,同时不会抛出异常。感觉就像是给别的同级别的线程让路,但是自身线程在后续处理器的调用中还是可以再次被调用运行。大概就是yeild之后,当前运行线程又和其他线程处于同一起跑线,再次抽奖抢夺被cpu调度的机会。

     3、写到这里其实两者的区别已经显而易见了,

四、值得一提的是还有个Object类的wait()方法以及一个线程的join()方法在这里就不做阐述了

五、加油吧,如有不足请指正

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值