为什么'扩展线程'存在,当'实现Runnable'在所有情况下都是赢家

时间:2016-01-22 11:22:37

标签: java multithreading runnable java-threads

我知道Java线程中的implements Runnable is preferred over extends Thread因为它允许我们在需要时扩展其他类。但如果是这种情况,extends Thread是否也有implements Runnable的优势,如果是的话,这些优势是什么?

2 个答案:

答案 0 :(得分:31)

因为有时(几乎从不,但有时)你想要能够改变Thread的基本行为。

当你需要扩展它时。

您可以通过覆盖Thread课程中的某个方法进行更改,但您无法通过Runnable实施该方法来实现此方法。

答案 1 :(得分:18)

自Java 1.0发布以来的最近20多年,被认为是一种优秀的设计模式已经发生了变化。但是,Java致力于向后兼容,这意味着可能使用不良设计模式的旧代码仍然有效。

我的一个宠物讨厌是StringBuffer,因为它的方法已经同步,并且几十年前被替换了,但是不幸的是开发人员今天不能使用它。甚至新的开发人员也使用它,即使它在开始使用Java之前很久就被弃用了。