为什么 'extends Thread' 存在,而 'implements Runnable' 在所有情况下都是赢家

Why does 'extends Thread' exist, when 'implements Runnable' is winner in all cases

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

因为有时(几乎从不,但有时)您希望能够更改 Thread 的基本行为。

那是你需要扩展它的时候。

您可以通过覆盖 Thread class 中的方法来更改它,您不能通过实现 Runnable.

中的方法来更改它

在 Java 1.0 发布后的过去 20 多年里,被认为是好的设计模式发生了变化。但是,Java 致力于向后兼容,这意味着可能使用不良设计模式的旧代码仍然可以工作。

我最讨厌的事情之一是 StringBuffer ,让它的方法同步从来都不是一个好主意,它在十多年前就被取代了,但不幸的是,今天甚至开发人员都没有被阻止使用它新开发人员使用它,即使在他们开始使用 Java.

之前很久它就被弃用了