我知道在Java线程中,
implements Runnable
比extends Thread
更受推荐,因为它允许我们在需要时扩展其他类。但如果情况是这样的,extends Thread
是否也有其自身优势?如果有的话,这些优势是什么?implements Runnable
比extends Thread
更受推荐,因为它允许我们在需要时扩展其他类。但如果情况是这样的,extends Thread
是否也有其自身优势?如果有的话,这些优势是什么?有时候(几乎从不,但有时候)您希望能够更改Thread
的基本行为。
这就是您需要继承它的时候。
您可以通过覆盖Thread
类中的一个方法来更改它,但无法通过实现Runnable
中的一个方法来实现。
自从Java 1.0发布以来的20多年里,被认为是良好设计模式的东西已经发生了改变。然而,Java致力于向后兼容,这意味着可能使用较差设计模式的旧代码仍将工作。
我的一个讨厌之一是StringBuffer
。它的方法从来没有很好地同步过,十多年前就被取代了。但不幸的是,开发人员今天仍然可以使用它,甚至新的开发人员也在使用它,尽管它在他们开始使用Java之前就已经被弃用了。
run()
,而其他方法很少覆盖。 - Peter Lawreyclass Thread implements Runnable
。这意味着通过继承,您可以将重写的Thread传递到任何使用Runnable的地方,并且可以在Thread的构造函数中传递一个Runnable作为其默认实现。如果有人说的话让您感到困惑,那可能只是因为您不理解他们在说什么。这个问题是有意义的,因为它是一个常见的问题,请参见“Possible duplicate”。 - Peter Lawrey