为什么我们需要重写run()方法扩展线程类

时间:2016-05-13 07:15:27

标签: java

为什么我们需要在扩展它时覆盖run类的thread方法。只要我知道扩展类的时候,我们就会覆盖抽象的方法。但是run方法有定义public void main()。为什么必须覆盖它。

4 个答案:

答案 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的创建者已经同意了要覆盖的方法的名称。否则每个开发人员都会使用他/她自己的名称来编写方法,编译器也不会知道多线程代码的位置。