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