为了账号安全,请及时绑定邮箱和手机立即绑定

sleep()不会放弃cpu资源

错了吧?调用sleep()方法,是一直占有着cpu,不会放弃cpu的。用wait()方法才可以进入阻塞,让出cpu,等待notify()唤醒。

正在回答

5 回答

执行线程sleep方法是依然占着cpu的,操作系统认为该当前线程正在运行,不会让出系统资源。

执行wait方法是让线程到等待池等待,让出一系列的系统资源,其他线程可以根据调度占用cpu

2 回复 有任何疑惑可以回复我~
#1

net_liufei 提问者

非常感谢!
2015-10-31 回复 有任何疑惑可以回复我~
#2

慕勒048149

老哥,你写错了,sleep()释放CPU
2019-07-15 回复 有任何疑惑可以回复我~
#3

handsomecoder

回复 慕勒048149错了,老师讲的时候口误了,sleep()是不让出锁,wait()是让出锁
2021-04-14 回复 有任何疑惑可以回复我~

线程的资源有不少,但应该包含CPU资源和锁资源这两类。

sleep(long mills):让出CPU资源,但是不会释放锁资源。

wait():让出CPU资源和锁资源。

锁是用来线程同步的,sleep(long mills)虽然让出了CPU,但是不会让出锁,其他线程可以利用CPU时间片了,但如果其他线程要获取sleep(long mills)拥有的锁才能执行,则会因为无法获取锁而不能执行,继续等待。

但是那些没有和sleep(long mills)竞争锁的线程,一旦得到CPU时间片即可运行了。

13 回复 有任何疑惑可以回复我~

我的java书上说:sleep(long mills)是会让出CPU的

0 回复 有任何疑惑可以回复我~
#1

handsomecoder

嗨,大家把释放锁和释放cpu搞混了。 sleep()的时候,不让出锁,但是让出cpu wait()的时候,立即让出锁,锁都没了,肯定也让出cpu
2021-04-14 回复 有任何疑惑可以回复我~

估计你把资源和锁搞错了  

0 回复 有任何疑惑可以回复我~
不会的。
0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

sleep()不会放弃cpu资源

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信