代码之家  ›  专栏  ›  技术社区  ›  Guest

何时通过扩展[复制]创建线程

  •  0
  • Guest  · 技术社区  · 6 年前

    通常线程可以通过两种方式创建

    1. 实现可运行接口

    通过阅读所有教程,所有人都说实现一个可运行的接口总是很好的,因为如果通过扩展(第一个方法)创建,就不能扩展任何其他类。 另外,如果我们通过扩展创建线程,那么每个线程都将创建新对象,而如果我们通过实现所有线程创建线程,那么将共享同一对象。

    我的问题是,如果实现Runnable是最好的选择,而扩展线程是不好的做法,为什么java有这个选择?我相信如果我们通过扩展来创建线程,肯定会有一些优势(我相信我们应该使用扩展线程方法,因为没有其他父类不是唯一的答案)

    提前谢谢

    3 回复  |  直到 6 年前
        1
  •  2
  •   Dinesh    6 年前

    这是一个设计决策,何时应该实现可运行接口,何时应该扩展线程。

    1. 如果你想要一个更具体或更专业的对象版本,你可以自己问一些问题。如果它向现有线程对象添加了新功能,那么您应该扩展threda类。否则就去实现一个可运行的接口。
    2. 实现Runnable不会创建线程。实现一个可运行的接口只会创建一个应该由线程执行的任务。
        2
  •  4
  •   GhostCat    6 年前

    2018年,真正的答案是:你根本不用裸金属线。

    我们有这样的抽象概念 fork/join , futures ,或 ExecutorService 这些天的框架。

    不要自己做线程!

    如果你这样做了,你会认为“老好人” . 在本例中,可以归结为:不要扩展线程,而是实现Runnable。你知道的 希望通过使用 extends ,当你可以逃脱 implements 相反!

        3
  •  0
  •   Vishrant    6 年前



    三。使用 Callable 接口

    Thread 您可以很高兴地从Thread类进行扩展,或者最好扩展 Runnable 可赎回 接口

    我相信如果我们通过扩展来创建线程,肯定会有一些优势