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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈圳 高级黑马   /  2013-2-21 22:05  /  1309 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程开始是继承Thread类来实现,后来实现了多继承就不能继承其他的类,出现了局促限,然后用Runnable接口扩展.避免了继承的局限
API文档里显示Thread类也实现了Runnable接口,它为什么要实现Runnable接口呢,它们俩个都可以单独实现多线程功能的.而且Thread应该是在Runnable先出来的,Runnable是为了解决继承局限而改进的.为什么要Runnable解决了问题后,还要让Thread实现它呢?

评分

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

查看全部评分

3 个回复

倒序浏览
兄台   这些底层的东西  不是我们现在该研究的.你只要知道它是这么回事就ok了,其它的以后在去深究
回复 使用道具 举报
我感觉呢。。。Runnable是多线程必须实现的接口,从Thread中分离出来,定义了多线程都必须要实现run方法,既然Thread也是用来实现多线程的,那当然也必须实现Runnable。其实通俗来说,不是他们两个单独实现多线程,而是只有Runnable在实现多线程。
回复 使用道具 举报
面向接口编程...以后你会理解,一般java的API里面都会有一些接口或抽象类,同时会有多种实现类,正如List是一个接口,实现这个接口的有很多个类(ArrayList,LinkedList...),适用不同的需求,为了以后的维护简单,我们不能把程序写死,所以一般在定义变量或者定义参数类型还是返回值类型时,尽量使用接口来引用变量,只要是实现了这接口的就行,而不是特定的一个类,所以如果有一个函数需要传进一个Runnable类型的而Thread又没有实现Runnable接口,那岂不是连编译都编译不过去?学了spring的话应该就很容易理解这种做法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马