黑马程序员技术交流社区

标题: 多线程问题求助? [打印本页]

作者: 易伟    时间: 2012-2-6 11:51
标题: 多线程问题求助?
本帖最后由 易伟 于 2012-2-6 12:24 编辑

在多线程中,我们可以继承Thread复写run方法,也可以继承runnable复写run方法。那什么时候继承runnable比较好了,直接继承runnable有什么优点呢???
作者: 曾辉    时间: 2012-2-6 11:57
java编程要面向接口而非基类    所以规范的编程方法是实现runnable接口
不过实际编程中,就看你自己怎么写省事了
比如你写的一个MyClass类  它不需要再继承其他的父类  而只需作为一个线程存在   那么你完全可以继承thread类来实现线程
但是,如果MyClass类自己本身有其他的父类  那么你就不能再使用继承的方法拉..  因为java不支持多继承  所以你只能实现runnable接口咧..
作者: 刘基军    时间: 2012-2-6 11:59
Java可以多implements,而只能单extends

作者: 秦碧    时间: 2012-2-6 12:07
1. 在毕老师第11天售票的例子中 可以知道 如果多个线程共享数据
若使用Thread类继承,则需要使用静态成员,而静态成员随着类的加载而加载,其存活时间长,需要占用较多的资源
而如果实现Runnable接口,则不需要将其静态化。
2. 如果以个类B,是A的子类,这时他若想使用多线程
由于java中只支持单extends,则需要用B实现Runable接口
作者: 黑马唐浩    时间: 2012-2-6 12:14
java只支持单继承,因此如果是采用继承Thread的方法,那么在以后进行代码重构的时候可能会遇到问题,因为你无法继承别的类了.
同理,java对一个类实现接口数目没有限定。可想而知,实现接口的优势了。
作者: 易伟    时间: 2012-2-6 12:23
谢谢大家,我懂了。
作者: 任奇    时间: 2012-2-6 12:58
Thread要继承,这样的话你就不可以继承其他的类了。Runnable只需要实现,你同时可以继承其他的类,也可以实现其他的类。
作者: 彭嘉聪    时间: 2012-2-6 13:20
Runnable的好处是,
线程功能变成了这个对象的额外功能,
线程调用的时候是调用这个对象的run方法里面的代码
这样有利于保持了体系并增加了额外的功能。
一般推荐用实现Runnable接口




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