start()方法真正实现了多线程。
当程序调用start()方法时,会自动开启一个线程,并接着执行下面方法,此时就实现了多线程。而开启的线程此时属于就绪状态,等到获得cpu的时间片后,就会开始执行线程的run()方法,run()方法执行完后,线程随之终止并销毁。
run()方法只是普通的方法。如果程序主动调用了run()方法,则会在run()方法执行完之后才会调用接下来的代码,此时相当与还是多线程。
public class ExtendThread extends Thread{
@Override
public void run() {
System.out.println("开启了一个线程"+Thread.currentThread().getId()+Thread.currentThread().getName());
}
}
// 使用run()方法调用
public class Test {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
new ExtendThread().run();
}
}
}
//结果:
//开启了一个线程1main
//开启了一个线程1main
//.......
// 使用start()方法调用
public class Test {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
new ExtendThread().start();
}
}
}
//结果:
//开启了一个线程82Thread-62
//开启了一个线程83Thread-63
//.......