黑马程序员技术交流社区

标题: 问题为什么这些操作线程的方法,要定义在Obj问题已经解决 [打印本页]

作者: 郑彬    时间: 2012-8-15 23:29
标题: 问题为什么这些操作线程的方法,要定义在Obj问题已经解决
本帖最后由 郑彬 于 2012-8-17 23:26 编辑

为什么这些操作线程的方法,要定义在Object类中呢?
因为这些方法在操作同步中线程时,都必须要标识它们所操作线程只有的锁。
只有同一个锁上的被等待线程,可以被同一个锁上notify唤醒。
不可以对不同锁中的线程进行唤醒。
也就是说,等待和唤醒必须是同一个锁。
而锁可以是任意对象,所以可以被任意对象调用的方法定义object类中。
为什么?
作者: 樊占江    时间: 2012-8-15 23:32
1、这些方法存在于同步中。
2、使用这些方法时必须要标识所属的同步的锁。
3、锁可以是任意对象,所以任意对象调用的方法一定定义Object类中。

作者: 杨健yj    时间: 2012-8-16 00:18
要同步的话必须使用同一把的锁,因为你的锁可能是任意对象,锁的操作如wait(),notify()就有可能是任意对象操作的,要保证都能实现这功能就必须把它放在老祖宗(Object)那。
作者: 杨彪    时间: 2012-8-16 00:26
Object类是所有类的父类,所有的类都继承着它
作者: 刘圣伟    时间: 2012-8-16 08:22
为什么这些操作线程的方法,要定义在Object类中呢?

object类是所有类的根基类;  

锁可以是任意对象,  注意这些对象,不光光包含着,线程 ,也有别的对象,也需要锁。

如果,只定义在,线程中,,那别的对象,是不是还要再定义一下,就重复了,没必要啊,
所以,就定义在Object 类中, 所有的对象就都可以用了


作者: 童兴龙    时间: 2012-8-16 11:38
有点纠结,不过以后用高级开发工具的时候这个问题就不是问题了。求加分。呵呵
作者: 郑彬    时间: 2012-8-17 23:26
Obj问题已经解决




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