码迷,mamicode.com
首页 > 其他好文 > 详细

第一篇技术专题:wait()和sleep的区别,哈哈都是睡觉,还有什么区别?

时间:2018-11-05 17:32:39      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:状态   第一个   方法   err   需要   区别   释放   别人   阻塞   

sleep和wait都是线阻塞,但是sleep在阻塞时不会释放锁,是不允许别的线程继续使用这个对象,但是wait是会释放对象锁的,可以供别的线程使用该对象,唤醒方式,sleep时间到了醒来,或者interruput()方法-à异常回到就绪状态,wait则需要使用notify,notifyAll()唤醒(推荐notifyAll方法,因为notify只会唤醒队列中的第一个线程)。

类比,sleep和wait同时进入一个房间睡觉,然后把房门锁上了,sleep是定了闹钟,时间到了闹钟响了就醒了,但是wait没有闹钟,只能等别人来叫醒,所以只能睡觉的时候,把卧室的门锁打开,别人才能来叫醒他,没人叫,就会一直睡着,但是,如果wait有时间,但是在时间内没醒,GG.—>抛出异常,超时了。

第一篇技术专题:wait()和sleep的区别,哈哈都是睡觉,还有什么区别?

标签:状态   第一个   方法   err   需要   区别   释放   别人   阻塞   

原文地址:https://www.cnblogs.com/xuzzb/p/9909883.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!