每個線程都是通過某個特定Thread對象所對應(yīng)的方法run()來完成其操作的,run()方法稱為線程體。通過調(diào)用Thread類的start()方法來啟動一個線程。
start() 方法用于啟動線程,run() 方法用于執(zhí)行線程的運行時代碼。run() 可以重復(fù)調(diào)用,而 start() 只能調(diào)用一次。
start()方法來啟動一個線程,真正實現(xiàn)了多線程運行。調(diào)用start()方法無需等待run方法體代碼執(zhí)行完畢,可以直接繼續(xù)執(zhí)行其他的代碼;此時線程是處于就緒狀態(tài),并沒有運行。 然后通過此Thread類調(diào)用方法run()來完成其運行狀態(tài), run()方法運行結(jié)束, 此線程終止。然后CPU再調(diào)度其它線程。
run()方法是在本線程里的,只是線程里的一個函數(shù),而不是多線程的。 如果直接調(diào)用run(),其實就相當(dāng)于是調(diào)用了一個普通函數(shù)而已,直接待用run()方法必須等待run()方法執(zhí)行完畢才能執(zhí)行下面的代碼,所以執(zhí)行路徑還是只有一條,根本就沒有線程的特征,所以在多線程執(zhí)行時要使用start()方法而不是run()方法。