为什么在java中sleep方法不会释放锁,但又说sleep会把执行权让给其他线程?

java中sleep方法不会释放锁,但是又说sleep会把执行权让给其他线程,这不是前后矛盾吗?没释放锁其他线程就是拿到执行权不还是执行不了吗?有没有大神给指点下~

青春有我
浏览 674回答 3
3回答

HUX布斯

我不知道你所谓的锁指的是啥玩意.但是sleep的意思就是当前线程暂停了,这个你明白吧.所谓的执行权让给其他线程这么描述也不太好.因为一个线程的sleep是跟其他线程无关的.不影响其他线程执行.当然,sleep线程消耗cpu的运算高的话,sleep了,确实可以是别的线程执行的更流畅.也许这就是它"让"的意思.

元芳怎么了

这个两个操作并不矛盾,sleep不释放锁代表其他线程不会获取到当前线程所持有的所有的锁,但是如果有线程不依赖sleep线程所持有的锁,则线程有机会获得cpu的持行权

幕布斯6054654

因为锁是对共享资源保护的一种手段,不释放锁 别的线程是拿不到资源的,但是别的线程不一定是拿这个资源啊,别的线程可以做其他的事啊
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java