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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 明天,你好 中级黑马   /  2013-5-22 22:24  /  1486 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为甚么wait() 、notify()、notifyAll()要定义在Object类中

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

3 个回复

倒序浏览
因为执行每个对象至少有一个线程,既然有线程,那就可能使线程进入阻塞状态(wait),然后
一定时间后在唤醒该状态(notify),如果定义在Object这个上帝类中,则可以直接引用者两个方法使
进程进入阻塞状态,然后唤醒。这样更加方便吧。我是这样想的。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
同意楼上的观点!这个问题不好回答,以下为我的看法。第一。object类是一切类的基类,超类,父类,所有的类,接口都继承与object类,定义在object类中的方法,它的子类都可以继承,可以通过对象调用,这里wait() 、notify()、noti、yAll()主要在多线程那里应用,线程类Thread,和接口Runnable都是object的子类,实现多线程的两种方式,继承Thread的子类和实现接口Runnable的类作为target传入thread类中实现线程,这些类中都会继承object的wait() 、notify()、noti、yAll(),可以直接调用他们,来控制线程之间的协调、通信;第二,多线程更多是与jvm有关,它比较靠近计算机底层,object类作为一切类的父类,必须定义那些最基本的方法,而线程作为进程的组成部分,控制线程的方法必须是优先定义在object这个基类中。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
简单理解能被不同类型的,不确定的对象啊什么的调用 都定义到父类,因为都可以去调用。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马