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

标签 java multithreading runnable implements java-threads

自从我在 Java 中使用线程以来,我发现了这两种编写线程的方法:

使用实现可运行:

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

或者,使用扩展线程:

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 - Java 中的 "implements Runnable"与 "extends Thread",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58165160/

相关文章:

c++ - 是否可以创建一个线程组,然后只有 "use"线程?

java - 如何保持一个线程调用多个JForm?

java - 如何在 Android 中停止 Runnable 进入 2 个不同的 Activity?

Java线程相当于Python线程守护进程模式

java - Runnable 中的无限循环消失了?

java - 如何检查char数组中是否存在特定字符序列

Java Long Compare 和 ValueOf 方法未定义

java - Activity 'MainActivity' 未声明?! (虽然是这样)

java - 在 Expresso 中使用客户端代码时出错

c++ - 处理器类型的运行时检测 - 原子操作