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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 郑彬 于 2012-8-17 23:26 编辑

为什么这些操作线程的方法,要定义在Object类中呢?
因为这些方法在操作同步中线程时,都必须要标识它们所操作线程只有的锁。
只有同一个锁上的被等待线程,可以被同一个锁上notify唤醒。
不可以对不同锁中的线程进行唤醒。
也就是说,等待和唤醒必须是同一个锁。
而锁可以是任意对象,所以可以被任意对象调用的方法定义object类中。
为什么?

6 个回复

倒序浏览
1、这些方法存在于同步中。
2、使用这些方法时必须要标识所属的同步的锁。
3、锁可以是任意对象,所以任意对象调用的方法一定定义Object类中。
回复 使用道具 举报
要同步的话必须使用同一把的锁,因为你的锁可能是任意对象,锁的操作如wait(),notify()就有可能是任意对象操作的,要保证都能实现这功能就必须把它放在老祖宗(Object)那。
回复 使用道具 举报
Object类是所有类的父类,所有的类都继承着它
回复 使用道具 举报
为什么这些操作线程的方法,要定义在Object类中呢?

object类是所有类的根基类;  

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

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

回复 使用道具 举报
有点纠结,不过以后用高级开发工具的时候这个问题就不是问题了。求加分。呵呵
回复 使用道具 举报
郑彬 中级黑马 2012-8-17 23:26:24
7#
Obj问题已经解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马