2016-05-13 104 views

回答

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

相关问题