扩展Thread类时是否需要定义run()方法?

时间:2018-09-10 17:51:10

标签: java multithreading

当我在互联网上搜索有关扩展Thread类的信息时,遇到的所有示例都覆盖了run()方法。我还在程序中扩展了Thread类,但尚未定义run()方法。它只是另一个类(我将其称为MyClass),它扩展了Thread类,具有构造函数和我定义的一些方法。但是,我很困惑,因为我在Main类中创建了MyClass对象,并在start()方法中使用该对象调用了main()方法。而且仍然有效。

我的问题是run()方法是由Java编译器(如默认构造函数)隐式定义的,还是在扩展Thread类时根本不需要重写该方法?

1 个答案:

答案 0 :(得分:2)

否,Java编译器未隐式定义run()方法。是explicitly defined by the Thread class

  

如果此线程是使用单独的Runnable运行对象构造的,则调用该Runnable对象的run方法;否则,此方法不执行任何操作并返回。

它不是abstract,因此不需要被覆盖。这里的run方法没有什么特别的。

由于要扩展Thread而不提供单独的Runnable,因此您的类继承了run方法; run运行且不执行任何操作。

因为它什么都不做,所以不是很有用。通常,您想在自己的Thread中做某事,因此通常在以这种方式创建Thread时,run会被覆盖以做一些有用的事情。