Java 类正在实现可运行接口,但未定义运行方法
这段代码编译时没有任何错误,但是不需要定义所有的方法吗Java 类正在实现可运行接口,但未定义运行方法,java,multithreading,Java,Multithreading,这段代码编译时没有任何错误,但是不需要定义所有的方法吗 否则声明类抽象。在上述代码中,类尚未声明为抽象,并且类也未定义run(),尽管它已实现可运行接口,但为什么代码仍然正确?线程实现可运行: 公开募捐 如果此线程是使用单独的可运行运行对象构建的, 然后调用可运行对象的run方法;否则,这个 方法不执行任何操作并返回 线程的子类应该重写此方法 因此,您不会得到编译错误,但是run不会做任何事情。新启动的线程将执行空运行方法并终止 您的代码是正确的,但最好避免扩展线程,创建单独的Runnable并
否则声明类抽象。在上述代码中,类尚未声明为抽象,并且类也未定义run(),尽管它已实现可运行接口,但为什么代码仍然正确?线程实现可运行: 公开募捐 如果此线程是使用单独的可运行运行对象构建的, 然后调用可运行对象的run方法;否则,这个 方法不执行任何操作并返回 线程的子类应该重写此方法 因此,您不会得到编译错误,但是
run
不会做任何事情。新启动的线程将执行空运行方法并终止
您的代码是正确的,但最好避免扩展线程,创建单独的Runnable并将其传递给新线程。这样不仅可以扩展线程以外的其他内容,而且不会冒意外重写线程方法的风险。线程重写运行,因为您扩展了线程,所以运行方法得到了实现。类实现了可运行,但也扩展了线程。在内部,线程还实现Runnable并为其提供实现。这就是它成功编译的原因
如果您删除
扩展线程
,您将看到它将给出编译错误。这是因为它扩展了已运行的线程()也线程
实现了可运行
,因此如果忽略实现了可运行
,代码将不会有任何不同。
class Qus3 extends Thread implements Runnable {
public static void main(String args[]) {
Qus3 q3 = new Qus3();
q3.start();
}
}