線程的start和run的區(qū)別 在啟動(dòng)線程時(shí)是應(yīng)該調(diào)用線程的run方法還是start方法?
在啟動(dòng)線程時(shí)是應(yīng)該調(diào)用線程的run方法還是start方法?1. 方法啟動(dòng)線程,真正實(shí)現(xiàn)了多線程。此時(shí)不需要等待run方法體代碼執(zhí)行完畢,直接繼續(xù)執(zhí)行以下代碼:調(diào)用thread類的start()方法啟動(dòng)
在啟動(dòng)線程時(shí)是應(yīng)該調(diào)用線程的run方法還是start方法?
1. 方法啟動(dòng)線程,真正實(shí)現(xiàn)了多線程。此時(shí)不需要等待run方法體代碼執(zhí)行完畢,直接繼續(xù)執(zhí)行以下代碼:調(diào)用thread類的start()方法啟動(dòng)線程。此時(shí),線程處于就緒狀態(tài),不會(huì)運(yùn)行。然后,thread類調(diào)用run()方法來完成其操作。這里,run()方法稱為線程體,它包含要執(zhí)行的線程的內(nèi)容。run方法結(jié)束時(shí),線程終止,
方法調(diào)用和線程啟動(dòng)的區(qū)別?
區(qū)別:調(diào)用start方法實(shí)現(xiàn)多線程,調(diào)用run方法實(shí)現(xiàn)多線程。啟動(dòng):用Start方法啟動(dòng)線程,實(shí)現(xiàn)多線程。此時(shí),不需要等待run方法體代碼完成執(zhí)行,而是直接繼續(xù)執(zhí)行下面的代碼。通過調(diào)用thread類的Start()方法來啟動(dòng)線程。此時(shí),線程處于就緒(可運(yùn)行)狀態(tài),不會(huì)運(yùn)行。一旦獲得SPU時(shí)間片,就會(huì)執(zhí)行run()方法。這里,run()方法稱為線程體,它包含要執(zhí)行的線程的內(nèi)容。run方法完成后,線程將立即終止。運(yùn)行:運(yùn)行()方法只是類的一個(gè)常用方法。如果直接調(diào)用run方法,則程序中仍然只有一個(gè)主線程,其程序執(zhí)行路徑仍然只有一個(gè),或者需要按順序執(zhí)行,或者需要等待run方法體執(zhí)行完畢后才能繼續(xù)執(zhí)行下面的代碼。這樣,就達(dá)不到寫線程的目的。結(jié)論:可以通過調(diào)用start方法來啟動(dòng)線程,而run方法只是線程的一個(gè)常用方法調(diào)用,在主線程中執(zhí)行。