当前位置: 首页 > 面试题库 >

Java中的“可运行的实现”与“扩展线程”

公良理
2023-03-14
问题内容

从什么时候开始在Java中使用线程开始,我发现了以下两种编写线程的方法:

与implements Runnable:

public class MyRunnable implements Runnable {
    public void run() {
        //Code
    }
}
//Started with a "new Thread(new MyRunnable()).start()" call

或者,使用extends Thread:

public class MyThread extends Thread {
    public MyThread() {
        super("MyThread");
    }
    public void run() {
        //Code
    }
}
//Started with a "new MyThread().start()" call

这两个代码块有什么显着区别吗?


问题答案:

是的:RunnableIMO是首选的工具。您并不是真的专门研究线程的行为。您只是给它一些运行的机会。这意味着合成是从哲学上讲“更纯净”的方式。

在实践方面,它意味着你可以实现Runnable从另一个类扩展为好。



 类似资料:
  • 问题内容: 为什么实现Runnable比从Thread类扩展更好的选择? 问题答案: 这样,您就可以 将 计算( what )与执行( when 和/或 how )分离。 使用或,您可以例如向提交许多工作/计算,这将使您计划工作。这是ExecutorService的摘录形式: 与直接使用线程相比,使用/ 给您更大的灵活性。

  • 问题内容: Java 线程本身实现了Java !并且根据Internet上的大多数专家的说法,首选Runnable而不是Extended Thread!即使我们没有Thread类也无法在线程意义上使用利用Runnable! 那么为什么我们宁愿实现而不是扩展,因为在两种情况下实际线程都是通过调用已实现的方法(即或)来声明的,尽管在我们不是仅通过重写方法来真正“扩展”功能的情况下? 如果我感到困惑,我

  • 本文向大家介绍Java中的线程与可运行的区别,包括了Java中的线程与可运行的区别的使用技巧和注意事项,需要的朋友参考一下 有两种方法可以创建新的执行线程。一种是将一个类声明为Thread类的子类。该子类应重写Thread类的run方法。然后可以分配并启动子类的实例。 创建线程的另一种方法是声明一个实现Runnable接口的类。然后,该类实现run方法。然后可以分配该类的实例,在创建Thread时

  • 问题内容: 我试图找出扩展Thread类的可能的优点是什么? 这是我描述的另一个问题的一部分:在Java中有两种创建线程的方法 从Thread类扩展 实现可运行的接口 如此处所述,使用可运行接口有许多好处。我的问题是从Thread类扩展的优点是什么?我想到的唯一好处是可以从Thread类扩展,并且可以称其为ThreadExtended类。然后,他/她可以在ThreadExtended中添加更多功能

  • 趋势 长相 男人 ----西式服装 -----伤员 --鞋类 }

  • 有人能告诉我第一个和第二个代码之间的区别吗?MaxPQ代表优先级队列,它是可以相互比较的“键”对象的集合。 代码1: 代码2: 第二个代码没有编译,但我不明白为什么在使用泛型时需要扩展而不是实现接口。