线程类据说与可运行接口(interface)具有“IS-a”关系以及“Has-a”关系。拥有这两者有什么好处?
为什么我们优先考虑“Has-a”关系?
最佳答案
What is the benefit of having both of these?
这是一个糟糕的设计选择,IMO。避免Thread
会更干净实现 Runnable
首先。这导致了人们称之为 run
的各种错误(正如 Stack Overflow 上的问题所证明的那样)。在 Thread
上而不是 start
.
Why do we give priority to "Has-a" relation?
组合通常比继承更灵活。如果你创建一个 Runnable
实现你可以把它传递给 ExecutorService
而不是 Thread
, 例如。您并没有将自己束缚于执行操作的一种特定方式 - 您只是在说“这是我想要运行的代码。”
关于java - 关于多线程的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21673881/