sleep() 和 wait() 有什么區(qū)別?
2022-10-25 09:24 作者:網(wǎng)星軟件 | 我要投稿
sleep() 和 wait() 有什么區(qū)別?
所屬的類不同:sleep方法屬于java.lang.Thread類的一個(gè)靜態(tài)方法;wait方法屬于java.lang.Object類的一個(gè)實(shí)例方法,由于Object類所有java類的父類,每一個(gè)java類都有wait方法。
資源的控制:sleep方法使得線程進(jìn)入阻塞狀態(tài),線程會(huì)暫停執(zhí)行,當(dāng)前線程所控制的資源沒 有釋放;wait方法使得線程進(jìn)入阻塞狀態(tài),線程會(huì)暫停執(zhí)行,會(huì)釋放前線程所控制的資源。
恢復(fù)不同:sleep方法當(dāng)設(shè)置sleep的時(shí)間結(jié)束之后,當(dāng)前線程會(huì)自動(dòng)進(jìn)入就緒狀態(tài),如果設(shè)置的時(shí)間沒有結(jié)束,而強(qiáng)制喚醒,會(huì)進(jìn)入異常;wait方法要恢復(fù)線程的運(yùn)行需要調(diào)用notify/notifyAll方法來手動(dòng)喚醒,使得線程進(jìn)入就緒狀態(tài)。
標(biāo)簽: