黑马程序员技术交流社区

标题: 毕老师视频中的问题 [打印本页]

作者: -Fei_安静的搁浅    时间: 2013-11-14 11:12
标题: 毕老师视频中的问题
sleep() 和 wait() 的区别在哪里?
作者: wjj410830911    时间: 2013-11-14 11:19
区别一
wait不用指定参数,sleep需要;
区别二
wait方法调用时,线程会处于等待状态,需要另一个线程notify或者notifyall
而sleep是当指定的参数到了时,自动醒来
区别三
当线程遇到sleep方法,不释放锁
当线程遇到wait方法,释放锁

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2