Java 同时扩展线程和实现runnable

Java 同时扩展线程和实现runnable,java,multithreading,Java,Multithreading,我应该什么时候用 class MyThread extends Thread implements Runnable{ //any statement. } 同时使用两种类型的线程创建有什么意义。您几乎不应该这样做。该类型已经实现了Runnable 这样做的唯一原因是,如果您希望在源代码中显式显示 两种类型的线程创建 创建线程只有一种方法:创建thread实例并调用其start()方法可运行只是一个接口。您几乎不应该这样做。该类型已经实现了Runnable 这样做的唯一原因是,如果您希望在源代

我应该什么时候用

class MyThread extends Thread implements Runnable{
//any statement.
}

同时使用两种类型的线程创建有什么意义。

您几乎不应该这样做。该类型已经实现了Runnable

这样做的唯一原因是,如果您希望在源代码中显式显示

两种类型的线程创建


创建线程只有一种方法:创建
thread
实例并调用其
start()
方法<代码>可运行只是一个接口。

您几乎不应该这样做。该类型已经实现了Runnable

这样做的唯一原因是,如果您希望在源代码中显式显示

两种类型的线程创建


创建线程只有一种方法:创建
thread
实例并调用其
start()
方法
Runnable
只是一个接口。

每个线程都是可运行的。您基本上覆盖了Runnable接口中的run方法()。在MyThread类中为您的run方法使用@Override注释“两种类型的线程创建”是什么意思?您的示例没有显示任何类型的线程创建。正如@SotiriosDelimanolis在他的回答中所说,
实现可运行
是多余的:线程实现可运行,MyThread扩展线程,因此无论你说与否,MyThread实现可运行。@jameslarge我的意思是在java中创建线程基本上有两种方法,通过扩展线程类或实现可运行接口。所以我的问题是,如果它是什么特殊的目标,我们可以通过同时使用这两种方法来实现。好的,但是如果不创建Runnable,就不能扩展Thread类,因为Thread是Runnable的。真正的选择是,是扩展Thread类,还是创建一个基本线程实例并给它一个可运行的委托。软件工程界几乎已经认识到,委托是设计软件的更好方法。当你在一个Foo有一个条形图的地方编写代码时,如果你把它写成一个条形图,那么它往往更容易测试、理解和维护。每个线程都是可运行的。你基本上覆盖了Runnable接口中的run方法()。在你的run方法的MyThread类中使用@Override注释你的意思是什么,“两种类型的线程创建?“您的示例没有显示任何类型的线程创建。正如@SotiriosDelimanolis在他的回答中所说,
实现可运行
是多余的:线程实现可运行,MyThread扩展线程,因此无论你说与否,MyThread实现可运行。@jameslarge我的意思是在java中创建线程基本上有两种方法,通过扩展线程类或实现可运行接口。所以我的问题是,如果它是什么特殊的目标,我们可以通过同时使用这两种方法来实现。好的,但是如果不创建Runnable,就不能扩展Thread类,因为Thread是Runnable的。真正的选择是,是扩展Thread类,还是创建一个基本线程实例并给它一个可运行的委托。软件工程界几乎已经认识到,委托是设计软件的更好方法。当您在一个Foo有一个条的地方编写代码时,如果您编写代码使Foo是一个条,那么它往往更易于测试、理解和维护。