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

我知道实现Runnable比Java线程中的扩展线程更可取,因为它允许我们在需要时扩展其他类。但是,如果是这样的话,是否也有自己的优势,如果是这样,这些优势是什么?extends Threadimplements Runnable


答案 1

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

那时你需要扩展它。

您可以通过重写类中的方法来更改它,但不能通过实现来自 .ThreadRunnable


答案 2

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

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