阿里面试官:改变线程状态的八个方法
阿里面試官:改變線程狀態(tài)的八個(gè)方法
原文鏈接 :https://blog.51cto.com/u_15460453/5293150
在說線程的基本方法之前,我們先介紹一下線程的生命周期 ,也就是線程的幾個(gè)狀態(tài),線程有新建、就緒、運(yùn)行、阻塞和死亡。
start方法
調(diào)用new方法會(huì)創(chuàng)建一個(gè)線程,這時(shí)候的線程處于新建狀態(tài) ,當(dāng)調(diào)用start方法的時(shí)候,線程處于就緒狀態(tài) 。
start方法和run方法 的區(qū)別在于start方法讓新建的線程進(jìn)入就緒狀態(tài),而run方法中是需要執(zhí)行的線程的代碼 ,當(dāng)調(diào)用run方法的時(shí)候,線程就是運(yùn)行的狀態(tài),run方法執(zhí)行完成后 ,線程會(huì)被終止,CPU對(duì)其他線程進(jìn)行調(diào)度 。
yield方法
yield方法是讓當(dāng)前線程釋放CPU,和其他線程一起競(jìng)爭(zhēng)時(shí)間片,它讓運(yùn)行態(tài)的線程進(jìn)入就緒狀態(tài)。
sleep方法
sleep方法讓線程進(jìn)入超時(shí)等待狀態(tài),sleep方法不會(huì)釋放當(dāng)前的鎖 ,它屬于Thread類
wait方法
wait方法讓線程進(jìn)入等待狀態(tài),wait方法被調(diào)用后會(huì)釋放鎖,它屬于Object類,需要等待notify來進(jìn)行喚醒 ,
notify方法
notify方法是喚醒對(duì)象監(jiān)視器等待的線程,有個(gè)有多個(gè)就隨機(jī)選擇一個(gè)