楼上说的很对了。我就说下我的理解吧
继承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接口比较实用,毕竟还可以继承别的类,使用别的类的功能
复制代码 |