黑马程序员技术交流社区
标题:
线程
[打印本页]
作者:
王运科
时间:
2012-3-30 21:33
标题:
线程
在线程中,sleep() 和 wait() 有什么区别?
作者:
李震 李震 李震
时间:
2012-3-30 21:51
sleep()方法是使线程停止一段时间的方法,在sleep的时间间隔期满后,线程不一定立即恢复执行。这是因为在个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非“醒来”的线程具有更搞优先级正在运行的线程因为其他原因阻塞。
wait() 是线程交互时,如果线程对一个同步对象X发出一个wait() 调用,该线程会暂停执行,被调用对象进入等待的状态,知道唤醒或等待时间到。
作者:
陈超
时间:
2012-3-30 22:06
一、sleep用于线程任何地方,而wait用于线程同步中
二、都有暂停线程执行的作用,但是sleep不会释放锁,wait要释放锁。
作者:
郑涛
时间:
2012-3-30 22:30
在线程中1,sleep()必须指定时间,wait()可以指定时间也可以不指定
2,wait方法必须定义在同步中,sleep不一定。
3,在同步中的wait() sleep()的对于执行权和锁的处理不同:sleep释放了执行权,但是不释放锁;wait()释放执行权,释放锁。
作者:
肖发腾
时间:
2012-3-30 22:53
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,
但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,
只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2