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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 武超 黑马帝   /  2011-12-6 22:24  /  2678 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 武超 于 2011-12-8 16:25 编辑

继承Thread类和实现Runnable接口有什么不同?

评分

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

查看全部评分

7 个回复

倒序浏览
这两种方式都能够产生线程,但使用接口的方式更灵活性。一个类可以实现多个接口,而只能继承一个类。能够使用接口编程时,尽量使用面向接口的编程方式,显得更面向对象一些。

评分

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

查看全部评分

回复 使用道具 举报
继承Thread类和实现Runnable接口都是创建一个线程的方式,只不过java中是单继承,如果你想创建一个线程,同时以想继承一个类(Thread以外的类)那么用实现Runnable接口的方法来创建一个线程将是非常好的选择。可以这么说,实现Runnable接口比继承Thread要好得多。它可以适合多个相同程序代码的线程去处理同一资源的情况,把线程同程序的代码,数据有效分离,更加面向对象。几乎所有的多线程应用都可以用实现Runnable接口的方式实现,所以我个人强烈建议使用Runnable的方式

评分

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

查看全部评分

回复 使用道具 举报
一、如果你的程序只想重写run()方法,建议使用Runnable()接口,方便你的类现在或将来需要继承其它类;
二、如果你打算修改或增强现有类的基本行为。可以考虑创建一个Thread的子类,
通常情况下,一般使用实现Runnable()接口的方法

评分

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

查看全部评分

回复 使用道具 举报
Java是单继承的,只能继承一个类,当一个类继承了Thread之后就不能再继承其它的类了,但这个类同时可能需要继承另一个类。例如:
class Student extends Person{ }
class Student extends Thread{ }
这是不正确的,但在java中,一个类在继承了另一个类的同时可实现多个接口。所以要使用接口:class Student extends Person implements Runnable{ }
这样既继承了类,又能使用多线程。

评分

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

查看全部评分

回复 使用道具 举报
段波 发表于 2011-12-6 23:18
继承Thread类和实现Runnable接口都是创建一个线程的方式,只不过java中是单继承,如果你想创建一个线程,同 ...

那是不是说可以舍弃继承Thread类,需要采用多线程时全部都用实现Runnable接口?
回复 使用道具 举报
段波 黑马帝 2011-12-7 12:22:40
7#
当然不是,存在肯定是有它的价值的,继承Thread类创建多线程会比实现Runnable接口来得快点,如果不考虑数据被多个线程共享的问题,用Thread还是不错的。
回复 使用道具 举报
武超 黑马帝 2011-12-8 16:25:41
8#
啊  明白了  谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马