为什么“实现 Runnable”比“extends Thread”更受欢迎?

2022-09-01 08:03:55

Java Thread 本身实现了一个 Java !根据互联网上的大多数专家的说法,实现Runnable比扩展线程更受欢迎!即使我们不能在没有 Thread 类的情况下使用 Runnable 的线程意义上!
那么为什么我们更喜欢实现而不是扩展,因为在这两种情况下,实际的线程都是通过调用实现的方法来陈述的(即 或),尽管如果我们没有真正“扩展”的功能,只是覆盖该方法?RunnableRunnableThreadThreadstart()run()ThreadThreadrun()

如果我听起来令人困惑,我很抱歉..!


答案 1

最常见的区别是:

扩展 Thread 类时,不能扩展所需的任何其他类。(如您所知,Java 不允许继承多个类)。实现 Runnable 时,可以为类节省空间,以便在将来或现在扩展任何其他类。

但是,显着的区别是。

扩展 Thread 类时,每个线程都会创建唯一的对象并与其关联。实现 Runnable 时,它会将同一对象共享给多个线程。

检查这个:http://manikandanmv.wordpress.com/tag/extends-thread-vs-implements-runnable/


答案 2

如果你的类正在扩展 Thread 类,那么它将成为继承属性 Thread 类的单个线程,因此它将很重。(当扩展 Thread 类时,每个线程都会创建唯一的对象并与其关联,但在实现 Runnable 时,它会将同一对象共享给多个线程)。

如果您的类正在实现 Runnable 接口,则只能重写 .因此,此实例创建一个单独的线程,并且每个单独的线程都单独运行,而不是作为程序中的单个重线程运行。另一件事,因为不支持多重继承,如果你实现Runnable,你将避免多重扩展的问题,所以如果你实现Runnable接口,你可以扩展除Thread类以外的任何类。run()ThreadJava