为什么我们需要在扩展它时覆盖run
类的thread
方法。只要我知道扩展类的时候,我们就会覆盖抽象的方法。但是run方法有定义public void main()。为什么必须覆盖它。
答案 0 :(得分:1)
线程的本质是它运行某些东西......所以线程抽象自然会要求你提供运行的东西。这是通过要求您实现run()。
在Java中完成的答案 1 :(得分:0)
https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#run()
因为Thread实现了Runnable并且它有一个run()方法,它没有任何实现(它们无法预测你想要“运行”的内容)
因此,当您扩展Thread类时,需要覆盖run()方法
PS:你可以创建一个扩展Thread类的类,并且不会覆盖run()方法,java不会抛出任何错误,但是当你启动Thread时,你将只执行一个空实现(所以基本上没什么)< / p>
答案 2 :(得分:0)
在为某些目的创建线程时。为了达到这个目的,你必须编写代码。
在run()
类的Thread
中,实现不执行任何操作。您已添加自己的逻辑以实现您的目的。只需覆盖run()
在其中写下你的逻辑并完成它。
现在,如果您有疑问为什么Java没有将此run()
保留为抽象方法,请参阅帖子Why is Thread not an abstract class and start() not final?
答案 3 :(得分:0)
当我们扩展一个类时,我们不会仅覆盖抽象方法。当我们需要在子类中提供特定父类方法的更具体的实现时,覆盖就是我们所做的。我们在扩展线程类时覆盖run
的原因是我们希望某些代码以多线程方式运行。所以Java的创建者已经同意了要覆盖的方法的名称。否则每个开发人员都会使用他/她自己的名称来编写方法,编译器也不会知道多线程代码的位置。