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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘琦 中级黑马   /  2013-3-16 13:01  /  1305 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程中slepp()和wait()到底有何不同?在多线程中怎么用?都一样吗?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-16 23:21

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

2 个回复

倒序浏览
多线程中slepp()和wait()到底有何不同?在多线程中怎么用?都一样吗?

注意:1.  sleep() 是一个静态方法,可以直接 Thread.sleep() 不用创建Thread 对象。
          2.  sleep() 会抛  throws InterruptedException
          3.  sleep() 中必须面指定参数。Thread.sleep( long  millis); 而wait() 可以不指定参数,会有一个默认值wait(0)
         4.   sleep() 不会释放CPU执行资格,而wait( long timeout )会释放CPU执行资格 直到被人notify(); 或notifyAll()唤醒,才会重新获得CPU的执行资格。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
1:sleep()方法是让当前正在执行的线程暂停一段时间,进入阻塞状态,在其休眠状态内,即使系统中没有其他可执行的线程,处于sleep()的线程也不会执行行,使用sleep(方法会抛出异常,所以调用sleep()方法时需要捕捉异常,要么就显示声明异常。
2:wait()方法是用于被synchronized修饰的方法或者代码块内线程通信的,导致当前线程等待,释放对该同步监视器的锁定,一般都是和notify()或notifyAll()配合使用。
从上面就可以看出,两者用的区别,希望我的回答会对你有帮助,共同进步,哈哈

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

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