为什么我们需要在扩展它时覆盖run
类的方法thread
。只要我知道什么时候我们扩展一个类,我们就会覆盖抽象的方法。但是run方法定义了public void main()。为什么必须覆盖它。为什么我们需要重写run()方法扩展线程类
2
A
回答
1
线程的本质是它运行着某些东西......所以线程抽象自然需要你提供一些东西来运行。这是通过要求你实现run()来完成的。
0
https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#run()
因为线程实现Runnable,它具有不具有任何实现一个run()方法(它们无法预知你想要的东西“跑”)
因此,当扩展Thread类,你需要重写run()方法
PS:你可以创建一个扩展Thread类的类,并且不会覆盖run()方法,java不会抛出任何错误,但是当你启动Thread时,你将会只是执行一个空的实现(所以基本上什么都没有)
0
当您为某个目的创建线程时。要达到这个目的,你必须编写一个代码。
在Thread
类的run()
中,实现什么都不做。你有添加自己的逻辑来实现你的目的。简单地覆盖run()
写你的逻辑和完成。
现在,如果你有疑问,为什么Java的不守这个run()
作为抽象方法然后请参阅发布Why is Thread not an abstract class and start() not final?
0
当我们扩展一个类,我们不只是覆盖抽象方法。当我们需要在子类中提供特定的父类方法的更具体的实现时,重写就是我们所做的。我们在扩展线程类时覆盖run
的原因是我们希望某些代码以多线程方式运行。所以Java的创建者们已经同意了一个被覆盖的方法的名字。否则,每个开发人员都会使用他/她自己的名称作为该方法,编译器不知道多线程代码的位置。
相关问题
- 1. 当子类从线程父类扩展时我们是否覆盖run方法
- 2. 为什么我们需要重写方法 - objective c?
- 3. 什么是扩展方法,为什么我们需要使用它?
- 4. 为什么我们需要Buffer.isBuffer方法?
- 5. 为什么我们需要addRequestHeader方法?
- 6. 扩展方法问题。为什么我需要使用someObj = someObj.somemethod();
- 7. 需要帮助线程的run方法
- 8. 为什么我们需要编写log.isDebugEnabled?
- 9. 为什么我们要使用抽象类或方法,为什么不重写超类方法呢?
- 10. 为什么要使用扩展方法?
- 11. 为什么我们需要System类来调用out.println()方法?
- 12. 为什么我无法为静态类创建扩展方法?
- 13. 为什么我们需要为每个线程使用NSAutoreleasepool?
- 14. 为什么我们在扩展方法中使用“this”?
- 15. 为什么我们需要一个明确的转换,而不是扩展方法而不是静态方法?
- 16. 重写扩展方法需要组装参考
- 17. 重写LINQ扩展方法
- 18. 重写lambda扩展方法
- 19. 为什么我们需要在appendPixelBuffer之后暂停线程:withPresentationTime:?
- 20. 为什么我们真的需要多个netty boss线程?
- 21. 什么是需要重写String类中的equals方法?
- 22. sigaction - 为什么我们不需要重置处理程序?
- 23. 为什么javac需要.java扩展名和java不需要.class扩展名
- 24. 为什么我不能在另一个UIViewController中重写UIViewController的扩展方法?
- 25. 为什么我们需要使用AsEnumerable()方法?
- 26. 为什么我们需要将布尔值传递给方法
- 27. 为什么我们需要指定init方法?
- 28. 为什么我们需要在stringbuilder中使用toString方法
- 29. 我为什么要扩展java.lang.RuntimeException
- 30. 为什么PHP有两个扩展文件夹?我需要他们两个吗?