一尘不染

Java中的"implements Runnable" vs "extends Thread"

javascript

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

使用工具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

这两个代码块有什么显着差异吗?


阅读 141

收藏
2022-02-09

共1个答案

一尘不染

是的:RunnableIMO 是首选方法。您并没有真正专门化线程的行为。你只是给它一些运行的东西。这意味着组合哲学上“更纯粹”的方式。

实际上,这意味着您也可以从另一个类实现Runnable扩展......您还可以Runnable通过 Java 8 的 lambda 表达式来实现。

2022-02-09