龙空技术网

多线程必会基础,sleep和wait的区别

Java识堂 1787

前言:

当前咱们对“c语言sleep和wait的区别”大概比较注意,朋友们都想要学习一些“c语言sleep和wait的区别”的相关文章。那么小编同时在网摘上搜集了一些对于“c语言sleep和wait的区别””的相关文章,希望咱们能喜欢,大家快快来学习一下吧!

本文为小编原创文章,首发于Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注

介绍

基本的差别

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

sleep方法可以在任何地方使用

wait只能在synchronized方法或synchronized块中使用

最主要的本质区别

Thread.sleep只会让出CPU,不会导致锁行为的改变

Object.wait不仅让出CPU,还会释放已经占有的同步资源锁

示例代码

输出为

Thread A is waiting to get lockThread A get lockThread B is waiting to get lockThread A is doneThread B get lockThread B is done

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

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

Thread A is waiting to get lockThread A get lockThread B is waiting to get lockThread B get lockThread B is doneThread A is done

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

标签: #c语言sleep和wait的区别