A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 落琪123 中级黑马   /  2015-10-17 10:26  /  479 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

sleep()和wait()之前有什么的区别?

5 个回复

倒序浏览
它们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁.
回复 使用道具 举报
sleep必须捕获异常,而wait不需要捕获异常
回复 使用道具 举报
释放同步锁我理解 但是捕获异常是怎么回事 求解答
回复 使用道具 举报
1、        wait()是属于对象锁的
        sleep()是属于线程的
2、        wait()方法中可以书写时间值也可以不书写时间值
        sleep()方法中必须书写一个时间值
3、        wait()方法执行后,线程会一直处于等待状态。在唤醒后才会转为运行状态或阻塞状态
        sleep()方法执行后,也会处于等待状态。但是时间一到,就会转为运行状态或阻塞状态
4、        wait()方法只能以书写在同步代码块内
        sleep()可以书写在同步代码块内,也可以书写在同步代码块外
回复 使用道具 举报
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。

sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。

在调用sleep()方法的过程中,线程不会释放对象锁。

而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马