教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Java中Sleep和Wait有什么區(qū)別?【Java面試題】

更新時間:2020年09月29日10時42分 來源:黑馬程序員 瀏覽次數(shù):

(1)問題分析:

面試官考核的線程方面的問題,線程的生命周期與過程中的阻塞狀態(tài)。

(2)核心答案講解:

對于sleep()方法,我們首先要知道該方法是屬于Thread類中的。而wait()方法,則是屬于Object類中的。sleep()方法導致了程序暫停執(zhí)行指定的時間,讓出cpu該其他線程,但是他的監(jiān)控狀態(tài)依然保持者,當指定的時間到了又會自動恢復運行狀態(tài)。在調用sleep()方法的過程中,線程不會釋放對象鎖。而當調用wait()方法的時候,線程會放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象調用notify()方法后本線程才進入對象鎖定池準備獲取對象鎖進入運行狀態(tài)。


(3)問題擴展:

線程生命周期及線程同步安全問題。

(4)結合項目中使用:

生產者消費者 生產完成 倉庫最多放一百個,必須等賣出五十個之后再通知生產。


猜你喜歡

Java算法之冒泡排序

java.lang.NullPointerException_java空指針異常解決方法 

什么是系統(tǒng)授權?系統(tǒng)授權流程介紹 

傳智播客Java高級軟件工程師課程 

0 分享到:
和我們在線交談!