子线程类 extends Thread时是可以不用重写run()方法,但是当你 子线程类对象.start()方法就是调Thread类的run()方法了。而Thread类的run()方法不执行任何操作并返回。
Thread类本身,已经重写了run方法,如果class继承Thread类时,没有重写run方法,会去执行父类Thread的run方法。只不过是空方法,因为在Thread类中有做判断target!=null.
/**
* If this thread was constructed using a separate
* <code>Runnable</code> run object, then that
* <code>Runnable</code> object's <code>run</code> method is called;
* otherwise, this method does nothing and returns.
* <p>
* Subclasses of <code>Thread</code> should override this method.
*
* @see #start()
* @see #stop()
* @see #Thread(ThreadGroup, Runnable, String)
*/
@Override
public void run() {
if (target != null) {
target.run();
}
}
而class类implements Runnable时则是必须重写run()方法的。