黑马程序员技术交流社区

标题: 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