sleep和wait的區別

sleep()是使線程停止一段時間的方法。但是在sleep時間間隔期滿後,線程不一定立刻恢復。因爲這個時刻,其他線程可能正在運行,只要正在運行的線程沒有被調度放棄執行,sleep線程將不能得到CPU。除非從sleep中醒來的線程具有更高打的優先級,或者正在運行的線程因爲其他原因發生阻塞。

wait()則不同,在線程調度的時候,如果線程的一個同步對象發出一個wait()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。

java裏面還有一個yield()方法也是使當前運行狀態的線程放棄CPU的方法,但是yield()方法只會給相同優先級或更高優先級的線程一個運行的機會。當執行yield()方法的時候線程仍處於 可就緒狀態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章