在比较线程的run方法和start方法前,我们先来看一下currentThread()方法:
public class Test {
public static void main(String[] args) throws Exception {
System.out.println(Thread.currentThread().getName());
}
}
currentThread()能返回执行当前代码的线程,下面开始正式进入run和start的比较:
一、start()方法
public class Demo extends Thread {
public Demo() {
System.out.println("执行构造方法的Thread: "+Thread.currentThread().getName());
}
@Override
public void run() {
super.run();
System.out.println("执行start()方法的Thread:"+Thread.currentThread().getName());
}
}
public class Test {
public static void main(String[] args) throws Exception {
System.out.println("执行主程序的Thread:"+Thread.currentThread().getName());
Demo demo = new Demo();
demo.start();
}
}
二、run ()方法
//代码和start()案例都一样,只是把主程序的demo.start()换成demo.run()
public class Test {
public static void main(String[] args) throws Exception {
System.out.println("执行主程序的Thread:"+Thread.currentThread().getName());
Demo demo = new Demo();
demo.run();
}
}
总结:
(1)直接使用run()方法:程序会立即执行run()方法,但是不启动新的线程,也就是不开启多线程
(2)使用start()方法:程序执行run()方法时机不确定,开启多线程。
因此,要成功使用多线程,start()方法是必不可缺的