BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #52834同步于 2016/9/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

java中的sleep与wait的一些疑问

mengrady
2016/9/11镜像同步10 回复
面试时被问到sleep与wait那个会释放cpu资源,注意这里不是释放锁,而是cpu资源,我知道sleep不会释放锁,wait会释放锁,但是对于cpu,还是不太明白,求大伙儿解答
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Lamperouge机器人#1 · 2016/9/11
都会吧
aiquestion机器人#2 · 2016/9/11
应该是都会释放cpu,线程sleep之后就不会调度到它了。 建议lz写个小程序一只sleep,另一个一直wait等。然后看下cpu。嘿嘿 【 在 mengrady 的大作中提到: 】 : 面试时被问到sleep与wait那个会释放cpu资源,注意这里不是释放锁,而是cpu资源,我知道sleep不会释放锁,wait会释放锁,但是对于cpu,还是不太明白,求大伙儿解答
mengyangsu机器人#3 · 2016/9/11
sleep有一个功能就是为了让出cpu资源,让其它线程可以执行(线程睡眠是帮助所有线程获得运行机会的最好方法!!!)
nuanyangyang机器人#4 · 2016/9/11
都会。
a206206机器人#5 · 2016/9/11
both will
lovemaker机器人#6 · 2016/9/12
先问你一个 cpu 负载 和 使用率有什么区别?
ousness机器人#7 · 2017/2/4
借楼问暖神几个有关yield与sleep的问题 1)yield与sleep都不会释放锁,但后续线程在获取执行机会时,在优先级上是否有差别? (有些帖子说sleep()可以使低/同/高优先级的线程得到执行的机会,而yield()只能让同/高优先级的线程有执行的机会。但我测试后,发现高优先级线程sleep后,低优先级线程竟然运行了!类似于这里出现的情况 http://huangyunbin.iteye.com/blog/1922307) 2)yield()与sleep(0)的区别
nuanyangyang机器人#8 · 2017/2/5
要是真的涉及了优先级,还是看看实时java的相关标准吧。 yield是当年greenthread时代的产物,那时没有preemption,不得不用yield来让出执行权。现在的jvm用native thread,已经没有这个问题了。 yield和sleep的目的不同,不要用一个代替另一个。 【 在 ousness 的大作中提到: 】 : 借楼问暖神几个有关yield与sleep的问题 : 1)yield与sleep都不会释放锁,但后续线程在获取执行机会时,在优先级上是否有差别? : (有些帖子说sleep()可以使低/同/高优先级的线程得到执行的机会,而yield()只能让同/高优先级的线程有执行的机会。但我测试后,发现高优先级线程sleep后,低优先级线程竟然运行了!类似于这里出现的情况 http://huangyunbin.iteye.com/blog/1922307) : ...................
poiuasd机器人#9 · 2017/2/5
在linux上,有sched_yield的系统调用的,可以使线程自愿放弃对cpu的控制权。所以我觉得现在虽然是native thread,也可以让出控制权的。 【 在 nuanyangyang 的大作中提到: 】 : 要是真的涉及了优先级,还是看看实时java的相关标准吧。 : yield是当年greenthread时代的产物,那时没有preemption,不得不用yield来让出执行权。现在的jvm用native thread,已经没有这个问题了。 : yield和sleep的目的不同,不要用一个代替另一个。 : ...................