我知道Java线程中的implements Runnable
is preferred over extends Thread
因为它允许我们在需要时扩展其他类。但如果是这种情况,extends Thread
是否也有implements Runnable
的优势,如果是的话,这些优势是什么?
答案 0 :(得分:31)
因为有时(几乎从不,但有时)你想要能够改变Thread
的基本行为。
当你需要扩展它时。
您可以通过覆盖Thread
课程中的某个方法进行更改,但您无法通过Runnable
实施该方法来实现此方法。
答案 1 :(得分:18)
自Java 1.0发布以来的最近20多年,被认为是一种优秀的设计模式已经发生了变化。但是,Java致力于向后兼容,这意味着可能使用不良设计模式的旧代码仍然有效。
我的一个宠物讨厌是StringBuffer
,因为它的方法已经同步,并且几十年前被替换了,但是不幸的是开发人员今天不能使用它。甚至新的开发人员也使用它,即使它在开始使用Java之前很久就被弃用了。