我不明白启动和运行线程之间的区别,我测试了这两种方法并且它们输出相同的结果,首先我使用了 run() 和在同一个线程上启动的组合,它们执行以下相同的功能:
public class TestRunAndStart implements Runnable {
public void run() {
System.out.println("running");
}
public static void main(String[] args) {
Thread t = new Thread(new TestRunAndStart());
t.run();
t.run();
t.start();
}
}
输出是:
running
running
running
然后我看到 run() 方法的 javadoc 说:
If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns
所以我尝试使用 run() 方法而不使用单独的可运行对象,如下所示:
public class TestRun extends Thread {
public void run(){
System.out.println("Running Normal Thread");
}
public static void main(String[]args){
TestRun TR=new TestRun();
TR.run();
}
}
它还执行 run() 方法并打印,Running Normal Thread
尽管它是在没有单独的可运行文件的情况下构造的!那么这两种方法的主要区别是什么