1、start方法才能真正啓動線程,此時線程會處於就緒狀態,一旦得到時間片,則會調用線程的run方法進入運行狀態。
2、run方法只是普通方法,如果直接調用run方法,程序只會按照順序執行主線程這一個線程。
可以通過一個Demo例證:
public class Main {
public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
pong();
}
};
// t.run();
t.start();
System.out.print("ping");
}
static void pong() {
System.out.print("pong");
}
}
如果只是調用了run方法,那麼最後控制檯輸出的結果只會有一種:
但是調用了start方法纔是真正的線程開始,在有時間片的時候線程會隨機調用run方法,所以會有多種結果: