黑马程序员技术交流社区
标题:
sleep和wait的区别
[打印本页]
作者:
247033993@qq.co
时间:
2014-5-25 15:50
标题:
sleep和wait的区别
1、sleep是Thread类中的,wait是Object中的;
2、sleep不会让出当前的资源(站着茅坑不拉屎),wait会让出当前的资源,sleep会在指定时间之后自动唤醒,wait需要其他线程调用not'ify或者notifyAll唤醒;
3、sleep还有个最大的特点就是谁调用,谁睡觉,即使在a类中调用b的sleep方法,实际上还是a去睡觉。
4、wait只能使用在同步控制方法或者同步控制块中使用,sleep在任何地方都能被使用;
5、sleep在使用时候需要捕获异常,wait不需要
作者:
路漫漫_求索
时间:
2014-5-25 21:00
1. sleep()方法需要指定睡的时间,wait()可以指定可以不指定。
2, 持有锁的线程执行sleep,不释放锁,持有锁的线程执行到wait()时锁释放。
3,sleep睡到指定时间会启用线程、wai只能被其他线程通过notify唤醒。
4,sleep和wait的共同点是:都能让线程处于冻结状态
try{Thread.sleep(10);}catch(Exception e){}//进来的线程,暂时睡10毫秒
public void run()
{
if(!p.flag)
try{p.wait();}catch(Exception e){}//调用wait方法(存在异常)
System.out.println(p.name+"....."+p.sex);
p.flag=false;
p.notify();//唤醒
}
作者:
张辉玉
时间:
2014-5-26 00:13
楼主 wait(),sleep(time)方法都需要捕获异常的
作者:
zhrnghgwsws
时间:
2014-5-26 01:07
学习了。
作者:
DxxD
时间:
2015-3-10 11:22
第五点,楼主说错了,wait抛出的异常需要处理!!!
作者:
lxztravel
时间:
2016-2-27 09:50
1、sleep是Thread类中的,wait是Object中的;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2