哪個(gè)方法是啟動(dòng)一個(gè)線程的 方法調(diào)用和線程啟動(dòng)的區(qū)別?
方法調(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)用和線程啟動(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í)行。
線程啟動(dòng)有哪幾種方式?
實(shí)現(xiàn)Java多線程有三種方式:繼承線程類、實(shí)現(xiàn)可運(yùn)行接口、使用executorservice、callable和future實(shí)現(xiàn)返回結(jié)果的多線程。前兩個(gè)方法在線程執(zhí)行后沒有返回值,只有最后一個(gè)方法有返回值。[java]查看純拷貝