实现方式和继承方式怎么选择:建议使用实现方式,因为首先看API会发现,其实Thread类也实现了Runnable接口的,也就是说,Thread类中的run方法时实现的Runnable接口的run方法的,从某种意义上说,Runnable是Thread类的爹,我们是可以通过继承Thread类来实现多线程,那样我们就是Runnable接口的孙子辈了,而如果我们直接实现Runnable接口,那么就是Runnable接口的儿子。既然能当儿子,何必装孙子呢,是吧,为什么我们不直接去实现Runnable接口呢,就像毕老师说的那样:要穿一手鞋,能不穿二手甚至多手鞋就不穿。可能这个例子有点不恰当。但是从另一个java语法上看待这个问题,也是建议使用实现方式,而不是继承方式,因为如果一个类要想通过继承Thread类创建线程,那么这样的话,他就不能去继承其他的类了,java类中只能单继承,不能进行多继承。而要是通过实现Runnable接口的方式的话,就可以即继承父类,实现其他的接口,java中一个类可以实现多个接口。
实现方式好处:避免了单继承的局限性。故在定义线程时,建立使用实现方式。
继承Thread, 线程代码存放Thread子类run方法中。
实现Runnable,线程代码存在接口的子类的run方法。
这是我自己的一些理解,希望对你有用 |