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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张海洋 中级黑马   /  2013-4-9 17:16  /  1494 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

sleep() 和 wait() 有什么区别?

点评

请不要发你以前发过的帖子,谢谢  发表于 2013-4-9 20:09

5 个回复

倒序浏览
wait会释放锁,sleep不会,sleep来自Thread类,wait来自Object。
回复 使用道具 举报
sleep只是让进程睡眠,到时间自动转成就绪态,而wait让起等待,没有唤醒之前不能自动苏醒进入就绪态
回复 使用道具 举报
sleep 让出处理器,睡眠指定时间,可以被中断 有一个异常要处理InterruptedException

wait 让出处理器,当前线程必须拥有此对象监视器,释放锁,等待,直到拥有此对象监视器的线程调用notify或notifyAll()唤醒,可以被中断有两个异常要处理InterruptedException和IllegalMonitorStateException
回复 使用道具 举报
主要区别在多线程方面,waite,停止后释放同步锁 sleep则依然不放锁,其他进程拿不到锁
回复 使用道具 举报
sleep和wait的区别有:
  1,这两个方法来自不同的类分别是Thread和Object
   2,最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
  3,wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在
    任何地方使用
   synchronized(x){
      x.notify()
     //或者wait()
   }
   4,sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马