您的位置 首页 java

面试官:同样是等待,sleep和wait有哪些区别

如何答?

基本的差别

sleep是Thread类的方法,wait是Object类的方法

sleep方法可以在任何地方使用,wait只能在 synchronized 方法或synchronized块中使用

最主要的本质区别

Thread.sleep只会让出CPU,不会释放对象锁

Object.wait不仅让出CPU,还会释放对象锁。只有针对此对象调用notify()方法或者时间到了,才能再次执行

代码演示

去掉了try catch部分,方便大家迅速理解

输出为

Thread A is waiting to get lock

Thread A get lock

Thread B is waiting to get lock

Thread A is done

Thread B get lock

Thread B is done

由输出可以看到Thread.sleep不会释放锁,因为A完成了B才拿到锁

我们将sleep和wait换一下,输出为

Thread A is waiting to get lock

Thread A get lock

Thread B is waiting to get lock

Thread B get lock

Thread B is done

Thread A is done

可以看到Object.wait会释放锁,因为A还没有执行完,锁就被B获得了

文章来源:智云一二三科技

文章标题:面试官:同样是等待,sleep和wait有哪些区别

文章地址:https://www.zhihuclub.com/194036.shtml

关于作者: 智云科技

热门文章

网站地图