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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

-Fei_安静的搁浅

中级黑马

  • 黑马币:393

  • 帖子:274

  • 精华:0

© -Fei_安静的搁浅 中级黑马   /  2013-11-14 11:12  /  947 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

sleep() 和 wait() 的区别在哪里?

5 个回复

倒序浏览
区别一
wait不用指定参数,sleep需要;
区别二
wait方法调用时,线程会处于等待状态,需要另一个线程notify或者notifyall
而sleep是当指定的参数到了时,自动醒来
区别三
当线程遇到sleep方法,不释放锁
当线程遇到wait方法,释放锁

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
wait是Object中定义的方法,它可以指定时间也可以不指定时间,调用这个函数时当前线程进入冻结状态,在锁对象的线程等待池中等待,wait冻结的线程如果没有指定时间则需要通过调用notify进行线程唤醒。线程冻结时释放执行权释放锁。释放锁的意思是使用同一个锁对象的其他方法或者代码块可以进入同步方法或者代码块了。

sleep是Thread中的方法,它需要指定时间,指定时间过后自动唤醒,无需第三方唤醒,sleep释放执行权,不释放锁,所以此时线程虽然停止了,但是和其使用同一个锁对象的同步代码或者同步代码块不能进入执行。
回复 使用道具 举报
hel 中级黑马 2013-11-14 12:53:16
板凳
sleep() 就是你在睡觉,你不可能一直睡吧,睡到一定时间你还是要醒的,
而wait()就是你老婆不让你睡觉,那你敢睡吗,那肯定不敢啦,除非她说:不管你啦,爱干嘛干嘛去,
这时你就可以爱咋地 咋地,
回复 使用道具 举报
sleep(time)里面要一个你设定的时间为参数  线程会根据你自定义的时间参数休眠 时间到了自动觉醒
wait()就是线程一直在冻结状态 必须被对应的 notify()唤醒才可以结束冻结状态
wait()一般和notify()一起作用于多线程   sleep()没什么固定的要求
回复 使用道具 举报
sleep()是确定让线程等一定的时间,这个时间是你可以控制的,而wait()是让线程等待,等拿到了执行权就可以运行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马