java - "implements Runnable"与 Java 中的 "extends Thread"

标签 java multithreading runnable implements java-threads

从我在 Java 中使用线程的时间开始,我找到了这两种写线程的方法:
实现 Runnable :

public class MyRunnable implements Runnable {
    public void run() {
        //Code
    }
}
//Started with a "new Thread(new MyRunnable()).start()" call
或者,使用 扩展 Thread :
public class MyThread extends Thread {
    public MyThread() {
        super("MyThread");
    }
    public void run() {
        //Code
    }
}
//Started with a "new MyThread().start()" call
这两个代码块有什么显着差异吗?

最佳答案

是:实现 Runnable是首选的方法,IMO。您并没有真正专门化线程的行为。你只是给它一些运行的东西。这意味着 composition是哲学上“更纯粹”的方式。
实际上,这意味着您可以实现 Runnable并从另一个类扩展......你也可以实现Runnable通过从 Java 8 开始的 lambda 表达式。

关于java - "implements Runnable"与 Java 中的 "extends Thread",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62568268/

相关文章:

java - 理解 Java 线程的并发性

java - new Runnable() 但没有新线程?

c# - 在STA线程上显示忙碌指示器

java - 获取 InterruptedException 以忽略中断

java - 使用 html 表单时 servlet 404 发现错误

java - 从模式向 JAXB 绑定(bind)类添加注释

multithreading - GPU 上的线程和线程组

java - 创建和使用匿名 Runnable 类的最佳方式

java - 单击前一帧中的按钮后,如何在新帧中打开 JProgress 栏?

java - 使用 Java 的 Clip 类的问题