当前位置: 首页 > 知识库问答 >
问题:

为什么“implements Runnable”比“extends Thread”更受欢迎?[重复]

柴默
2023-03-14

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

如果我听起来很困惑,我道歉。。!

共有3个答案

毋弘光
2023-03-14

一个类可能只有一个超类,但可以实现任意数量的接口。通过扩展线程你就放弃了对其他任何东西进行子类化的机会。

宋宏毅
2023-03-14

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

如果您的类是实现Runnable接口,那么您只能重写run()。因此,此实例创建了一个单独的Thread,并且每个单独的Thread单独运行,但不作为程序中的单个重线程运行。另外,由于Java不支持多重继承,如果您实现Runnable,您将避免多重扩展的问题,因此如果您实现Runnable接口,您可以扩展除Thread类之外所需的任何类。

魏臻
2023-03-14

最常见的区别是:

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

然而,显著的差异是。

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

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

 类似资料:
  • Eclipse给了我一个警告,说类型中的方法已被弃用。我正在使用JUnit4。 我在Eclipse中编写了以下代码: 有人能告诉我为什么不推荐这个方法,或者我应该用什么方法来代替吗?

  • 我一直在搜索任何链接、文档或文章,以帮助我了解我们何时选择数据集而不是数据框,反之亦然? 我在互联网上找到的所有标题都是,但当打开时,它们只指定了数据帧和数据集之间的区别。这里有很多链接,只是列出了场景名称的不同。 stackoverflow上只有一个问题有正确的标题,但即使在这个答案中,databricks文档链接也不起作用。 我正在寻找一些信息,这些信息可以帮助我从根本上了解我们何时使用数据集

  • 本文向大家介绍请设计一款比大白更受欢迎的家用机器人。相关面试题,主要包含被问及请设计一款比大白更受欢迎的家用机器人。时的应答技巧和注意事项,需要的朋友参考一下  家用机器人主要领域有  家务劳动、教育娱乐、家庭看护(智能控制) 家务劳动和智能控制领域较窄且有专业公司在这些垂直领域有多年深更不容易在短时间内产生更好的产品(因为其他知名品牌的原因,即使产生也不能在短时间内在用户心中产生深刻的产品印象)

  • 该站点的目标是成为 Jekyll 的全面指南。包括一些内容如:搭建和运行你的站点、创建以及管理内容、定制站点的展现和外观、在不同的环境中发布、以及参与到 Jekyll 将来的开发的一些建议。 Jekyll 究竟是什么? Jekyll 是一个简单的博客形态的静态站点生产机器。它有一个模版目录,其中包含原始文本格式的文档,通过一个转换器(如 Markdown)和我们的 Liquid 渲染器转化成一个完

  • 欢迎来到 Libra 开发者站点! Libra 的使命是建立一套简单的全球货币和金融基础设施,为数十亿人服务。 The world truly needs a reliable digital currency and infrastructure that together can deliver on the promise of “the internet of money.” Securi

  • 首选的方法是什么?使用const和import有什么区别?假设您可能在许多文件/组件中导入相同的库。 常量 进口