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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 247033993@qq.co 中级黑马   /  2014-5-25 15:50  /  2998 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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不需要

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

5 个回复

正序浏览
1、sleep是Thread类中的,wait是Object中的;
回复 使用道具 举报
第五点,楼主说错了,wait抛出的异常需要处理!!!
回复 使用道具 举报
学习了。
回复 使用道具 举报
楼主  wait(),sleep(time)方法都需要捕获异常的
回复 使用道具 举报

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();//唤醒
        }

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马