黑马程序员技术交流社区

标题: 多线程的Runnable用法可不可以用定义内部类继承Thread来代替? [打印本页]

作者: 王峰230321    时间: 2013-7-9 15:15
标题: 多线程的Runnable用法可不可以用定义内部类继承Thread来代替?
本帖最后由 杨兴庭 于 2013-7-10 22:14 编辑

正好学到多线程 老师讲到 runnable接口的用法,   就拿老师 那个例子 来比喻
student已经继承了person, 但是 student里有一段需要被多线程的部分,  但是不能实现多继承,所以才出现了 。 runnable
但是, 直接在student里创建一个内部类, 然后用内部类来继承thread   这样 可行吗?  。  
如果行的话,  那和runnable在 方法应用上 会有什么区别吗。 ?  

作者: 草貌路飞    时间: 2013-7-9 15:40
不怎么清楚,但以我的理解,还是这样会比较麻烦。用外部类创建内部类,在内部类中可以调用外面的东西,看上去是可行的,这里说的是成员内部类。但外部类对象必须一直存在吧,不然内部线程类如果调用外面的东西会出问题,而外面对象一直存在就有点浪费内存了,本来只用一个对象的。如果把外面的东西设成静态的,外面对象就不用一直存在,但那样也比较浪费内存,本来做完就可以扔的,还要一直留着。
不知道对不对,另开发的时候就是这么写我就尴尬了
作者: 王峰230321    时间: 2013-7-9 15:51
草貌路飞 发表于 2013-7-9 15:40
不怎么清楚,但以我的理解,还是这样会比较麻烦。用外部类创建内部类,在内部类中可以调用外面的东西,看上 ...

那要是用接口的方法来实现的话,,  那不一样还是需要有对象的支持吗,,  虽然 接口实现的话 , 是1个类,  内部类加外部类的话 是俩,,  但是 其整体内容是一样的话。  会比之前那个 多占用很多内存吗。?
作者: toShareBeauty    时间: 2013-7-9 16:02
本帖最后由 toShareBeauty 于 2013-7-9 16:04 编辑

大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。这很重要,因为从设计角度来说,除非程序员打算修改或增强类的基本行为,否则不应为该类创建子类。




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