本帖最后由 李小然 于 2014-6-8 15:26 编辑
第一种情况,继承Thread类而言:
你需要重写run方法。
第二种情况,实现Runnable接口:
你仍然需要重写run方法。
看似相似,其实是有区别的。
对于第一种情况,要从继承说起。
既然选择继承,就是认了一个爹。所有爹身上的属性都会被继承
自己也成为了Thread的儿子
做一个不是那么恰当的比喻,我的类有100个方法,只有1个需要在多线程中运行。
我就继承了Thread,并且将这一个方法放在run中。
对于剩下的99种方法而言,为什么要继承Thread,干嘛要和你Thread有子父类的关系?
这从逻辑上就说不过去。
但是如果选择第二种情况,只实现Runnable接口,就将一个方法放在run中
剩下的方法干干净净,和别人没有任何联系
这样逻辑上才比较顺畅。
所以,如果你写一个纯粹的类,
全部的方法都是为了在多线程上运行,都要放在run中,
那么这两种方法差不错,推荐第一种继承。
如果你写的类还有别的功能不需要多线程,
那么就推荐第二种实现。
楼下说的也非常对,第二种写法防止了多继承的限制!
|