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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 易伟 黑马帝   /  2012-2-6 11:51  /  1960 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 易伟 于 2012-2-6 12:24 编辑

在多线程中,我们可以继承Thread复写run方法,也可以继承runnable复写run方法。那什么时候继承runnable比较好了,直接继承runnable有什么优点呢???

评分

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

查看全部评分

7 个回复

倒序浏览
java编程要面向接口而非基类    所以规范的编程方法是实现runnable接口
不过实际编程中,就看你自己怎么写省事了
比如你写的一个MyClass类  它不需要再继承其他的父类  而只需作为一个线程存在   那么你完全可以继承thread类来实现线程
但是,如果MyClass类自己本身有其他的父类  那么你就不能再使用继承的方法拉..  因为java不支持多继承  所以你只能实现runnable接口咧..

评分

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

查看全部评分

回复 使用道具 举报
Java可以多implements,而只能单extends
回复 使用道具 举报
1. 在毕老师第11天售票的例子中 可以知道 如果多个线程共享数据
若使用Thread类继承,则需要使用静态成员,而静态成员随着类的加载而加载,其存活时间长,需要占用较多的资源
而如果实现Runnable接口,则不需要将其静态化。
2. 如果以个类B,是A的子类,这时他若想使用多线程
由于java中只支持单extends,则需要用B实现Runable接口

评分

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

查看全部评分

回复 使用道具 举报
java只支持单继承,因此如果是采用继承Thread的方法,那么在以后进行代码重构的时候可能会遇到问题,因为你无法继承别的类了.
同理,java对一个类实现接口数目没有限定。可想而知,实现接口的优势了。

评分

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

查看全部评分

回复 使用道具 举报
谢谢大家,我懂了。
回复 使用道具 举报
任奇 黑马帝 2012-2-6 12:58:54
7#
Thread要继承,这样的话你就不可以继承其他的类了。Runnable只需要实现,你同时可以继承其他的类,也可以实现其他的类。

评分

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

查看全部评分

回复 使用道具 举报
Runnable的好处是,
线程功能变成了这个对象的额外功能,
线程调用的时候是调用这个对象的run方法里面的代码
这样有利于保持了体系并增加了额外的功能。
一般推荐用实现Runnable接口

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马