start方法確保代碼在新的線程上下文中運行.如果你直接調用run,那么它就像一個普通的方法調用,它將在當前線程的上下文中運行,而不是新的線程.
start方法包含觸發新線程的特殊代碼;運行顯然沒有這個能力,因為你寫的run方法沒有包含它.
當你調用start()方法時你將創建新的線程,並且執行在run()方法里的代碼。但是如果你直接調用run()方法,它不會創建新的線程也不會執行調用線程的代碼。
run()方法只是類的一個普通方法而已,如果直接調用Run方法,程序中依然只有主線程這一個線程,其程序執行路徑還是只有一條,還是要順序執行,
還是要等待run方法體執行完畢后才可繼續執行下面的代碼,這樣就沒有達到寫線程的目的。
調用start方法方可啟動線程,而run方法只是thread的一個普通方法調用,還是在主線程里執行