如果线程构造函数有参数,并且参数是一个函数入口,那么就相当于创建了一个新的线程来执行这个函数。不过,Thread也有无参构造函数,看来Thread类的成员函数都不能再绑定执行函数了。
问题:默认构造的线程对象有什么用?子线程如何执行?
当你问为什么时,答案令人担忧。不可能了解设计该语言的人的想法。不过我会猜测一下。
Thread还允许子类化。例如,该线程类确实有一个已实现的run()方法,并使用无参数(空)构造函数。
public class HelloThread extends Thread {
@Override
public void run() {
System.out.println( "Hello Thread." );
}
}
new HelloThread().start();
Run Code Online (Sandbox Code Playgroud)
因此,有不止一种方法可以让线程对象执行任意代码。争论Runnable并不总是需要的。