ITPub博客

首页 > 应用开发 > > 同样是等待,sleep和wait有哪些区别

同样是等待,sleep和wait有哪些区别

作者:penny_liang 时间:2019-11-07 09:53:31 0 删除 编辑

基本的差别

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获得了

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/714/viewspace-3160791/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    189
  • 访问量
    1748