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