千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 為什么我們調(diào)用start() 方法時會執(zhí)行run() 方法?

為什么我們調(diào)用start() 方法時會執(zhí)行run() 方法?

來源:千鋒教育
發(fā)布人:wjy
時間: 2022-09-20 16:04:19 1663661059

  為什么我們調(diào)用 start() 方法時會執(zhí)行 run() 方法,為什么我們不能直接調(diào)用 run() 方法?

  這是另一個非常經(jīng)典的 Java 多線程面試問題,而且在面試中會經(jīng)常被問到。很簡單,但是很多人都會答不上來!

  new 一個 Thread,線程進入了新建狀態(tài)。調(diào)用 start() 方法,會啟動一個線程并使線程進入了就緒狀態(tài),當分配到時間片后就可以開始運行了。

為什么我們調(diào)用start() 方法時會執(zhí)行run() 方法

  start() 會執(zhí)行線程的相應準備工作,然后自動執(zhí)行 run() 方法的內(nèi)容,這是真正的多線程工作。

  而直接執(zhí)行 run() 方法,會把 run 方法當成一個 main 線程下的普通方法去執(zhí)行,并不會在某個線程中執(zhí)行它,所以這并不是多線程工作。

  總結(jié): 調(diào)用 start 方法方可啟動線程并使線程進入就緒狀態(tài),而 run 方法只是 thread 的一個普通方法調(diào)用,還是在主線程里執(zhí)行。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
  1. <dfn id="sz9c4"></dfn>
    <thead id="sz9c4"><video id="sz9c4"><div id="sz9c4"></div></video></thead>