Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类正在实现可运行接口,但未定义运行方法_Java_Multithreading - Fatal编程技术网

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();
    }
}