当前位置: 首页 > 面试题库 >

为什么“可运行的实现”优先于“扩展线程”?[重复]

高展
2023-03-14
问题内容

Java
线程本身实现了Java
Runnable!并且根据Internet上的大多数专家的说法,首选Runnable而不是Extended
Thread!即使我们没有Thread类也无法在线程意义上使用利用Runnable! 那么为什么我们宁愿实现而Runnable不是扩展,Thread因为在两种情况下实际线程都是通过调用已Thread实现的方法(即start()run())来声明的,尽管在Thread我们不是Thread仅通过重写run()方法来真正“扩展”功能的情况下?

如果我感到困惑,我深表歉意。


问题答案:

最常见的区别是:

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

但是,明显的区别是。

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

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



 类似资料:
  • 问题内容: 为什么实现Runnable比从Thread类扩展更好的选择? 问题答案: 这样,您就可以 将 计算( what )与执行( when 和/或 how )分离。 使用或,您可以例如向提交许多工作/计算,这将使您计划工作。这是ExecutorService的摘录形式: 与直接使用线程相比,使用/ 给您更大的灵活性。

  • 问题内容: 从什么时候开始在Java中使用线程开始,我发现了以下两种编写线程的方法: 与implements Runnable: 或者,使用extends Thread: 这两个代码块有什么显着区别吗? 问题答案: 是的:是首选的工具。您并不是真的专门研究线程的行为。您只是给它一些运行的机会。这意味着合成是从哲学上讲“更纯净”的方式。 在实践方面,它意味着你可以实现从另一个类扩展为好。

  • 问题内容: 我试图找出扩展Thread类的可能的优点是什么? 这是我描述的另一个问题的一部分:在Java中有两种创建线程的方法 从Thread类扩展 实现可运行的接口 如此处所述,使用可运行接口有许多好处。我的问题是从Thread类扩展的优点是什么?我想到的唯一好处是可以从Thread类扩展,并且可以称其为ThreadExtended类。然后,他/她可以在ThreadExtended中添加更多功能

  • 我一直在用OpenMP调用这个 在C11 std::threads中(我相信这些只是pthreads) 但是,OpenMP的实现速度是原来的两倍——更快!我本以为C11线程会更快,因为它们更低级。注意:上面的代码在一个循环中不仅被调用了一次,而且可能被调用了10000次,所以这可能与此有关吗? 编辑:为了澄清,在实践中,我要么使用OpenMP,要么使用C 11版本——不是两者都使用。当我使用Ope

  • 我很难理解内部类线程的行为。 它总是打印出“main”,并且线程是按顺序执行的。为什么内部类线程的执行由主线程执行? 谢谢!

  • 问题内容: 我在服务器上有一个网站。主页为example.com/index.php。 好的,我将一个index.html命名文件上传到服务器(根目录),当我在浏览器的URL栏中键入站点的域时,感到很惊讶,因为index.html页面已加载。 (example.com-> example.com/index.html)所以不是我想要的。 我的问题:为什么会这样?为什么index.html比inde