黑马程序员技术交流社区
标题:
实现Runnable接口和继承Thread类创建线程的区别
[打印本页]
作者:
邀明月
时间:
2013-11-26 20:32
标题:
实现Runnable接口和继承Thread类创建线程的区别
java中用实现Runnable接口创建线程和用继承Thread类创建线程的区别是什么啊?这两种方法哪个比较好啊?我经常把它们弄混,分不清哪个是哪个。
作者:
半夜雨半夜雨
时间:
2013-11-26 20:44
如果使用Thread类,一个类只能继承一个Thread,如果使用Runnable接口,一个类在实现多个接口,
一般用Runnable接口,因为他避免了单继承的局限性,又能扩展功能
作者:
freehiker
时间:
2013-11-26 20:46
楼上正解,通过实现接口避免了单继承的局限性
作者:
ysunday
时间:
2013-11-26 21:48
楼上说的很对了。我就说下我的理解吧
继承Thread就是作为Thread的子类了,那么这个类就是线程类了,显然你想做的不是让你写的类成为线程类,而只是想让那么一段代码会在某段时间运行。而且这个类就不能再继承别的类了。这样局限性是很大的。
比如
class Person {}
如果想让Student创建线程
class Student extends Thread{}
那么显然下边这么写不行
class Student extends Person, Thread{}
java单继承,不能继承两个类的
但是如果实现Runnable借口就不一样了
Student extends Person implements Runnalble{}
这就是写类的时候的区别:
继承Thread不能继承别的类
实现了Runnable借口可以继承别的类,线程只是这个类的一个扩展功能而已
再说开启的区别
比如
class Student extends Thread{}
那么开启这个线程是
Student s = new Student();
s.start();
new Student().start()
如果
class Student implements Runnable{}
那么开启这个线程就多一部了
Student s = new Student();
Thread t = new Thread(s);
t.start();
这就是开启线程的区别
还是使用实现Runnable接口比较实用,毕竟还可以继承别的类,使用别的类的功能
复制代码
作者:
胡陈思
时间:
2013-11-26 21:48
2楼说得对,如果选择子类继承Thread类来创建进程的话,那么因为JAVA中类只支持单继承,所以子类再想继承别的类就不可能了。
而接口可以被多实现,如果选择实现Runnable接口,子类还可以同时实现其他接口,这样就增强了扩展性。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2