标签:状态 第一个 方法 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