黑马程序员技术交流社区
标题:
多线程
[打印本页]
作者:
hxwo211314
时间:
2014-7-9 14:03
标题:
多线程
wait(), notify() ,notifyAll(),用来操作线程的方法为什么定义在了
Object
类中?
wait() sleep() 有什么区别?
作者:
签发
时间:
2014-7-9 14:13
这是一个设计概念 你写的所有类都来自object 自然也就自动具备那些方法。。。。。。。。。。。。。。 wait()sleep()的区别:最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。而且他俩继承的类不同,sleep继承的是Thread类,wait继承的是Object类。他们的作用范围也不同。另外leep必须捕获异常,而wait不需要捕获异常
作者:
lancerjs
时间:
2014-7-9 15:15
wait()方法使线程释放了对象锁,使线程进入等待区,
notify() ,notifyAll()唤醒一个或多个在等待区的线程,使它们加入对象锁的争夺,
因为以上三个方法都涉及到了对对象锁的操作,所以都属于Object的方法,
而sleep()是线程上的方法,调用此方法会使线程暂停一段时间,但不释放对象锁.
综上所述,
wait()来自于Object类,sleep()来自于Thread类,
执行wait()方法会释放对象锁,而sleep()不会
wait(),notify(),notifyall()必须在synchronized方法或代码块中执行,而sleep()可以在任何地方使用
wait()方法不需要捕获异常,而sleep()方法必须捕获异常
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2