wait()方法則是指當(dāng)前線程讓自己暫時(shí)退讓出同步資源鎖,以便其他正在等待該資源的線程得到該資源進(jìn)而運(yùn)行,只有調(diào)用了notify()方法,之前調(diào)用wait()的線程才會(huì)解除wait狀態(tài),可以去參與競(jìng)爭(zhēng)同步資源鎖,進(jìn)而得到執(zhí)行。
sleep()方法可以在任何地方使用;wait()方法則只能在同步方法或同步塊中使用; (推薦學(xué)習(xí):java課程)
sleep()是線程線程類(lèi)(Thread)的方法,調(diào)用會(huì)暫停此線程指定的時(shí)間,但監(jiān)控依然保持,不會(huì)釋放對(duì)象鎖,到時(shí)間自動(dòng)恢復(fù);
wait()是Object的方法,調(diào)用會(huì)放棄對(duì)象鎖,進(jìn)入等待隊(duì)列,待調(diào)用notify()/notifyAll()喚醒指定的線程或者所有線程,才會(huì)進(jìn)入鎖池,不再次獲得對(duì)象鎖才會(huì)進(jìn)入運(yùn)行狀態(tài);
Java中線程的生命周期圖譜如下所示: