天天看點

讓面試官瘋狂加分的回答!Java中sleep和wait方法的差別。今天一共有兩輪面試,第一輪是技術面考察一下你的實際能力

作者:學Java2

讓面試官瘋狂加分的回答!Java中sleep和wait方法的差別。

今天一共有兩輪面試,第一輪是技術面考察一下你的實際能力。開始面試,你知道Java裡面Sleep和wait方法的差別嗎?差別的話:sleep()是讓線程睡眠,然後wait是讓線程等待。差別就是sleep()是在隔一段時間以後會自動喚醒,wait是自己要等到其他的人去喚醒。

你在這裡等一下,我會讓我的上司過來跟你聊一下,然後來看一下你的綜合情況。這道題的文字版我已經整理在50萬字的面試文檔裡面,大家如果有需要可以在評論區留言領取。

好的面試官:wait()它是Object類中定義的方法,它使線程等待并釋放占有的鎖,讓其他線程可以獲得鎖并且繼續執行。在調用wait方法時候,線程必須先獲得對象的螢幕鎖,否則它會抛出異常。

wait方法會讓線程進入等待狀态,直到有其他線程調用:notify()或suspendAll(方法來喚醒它,或者等待時間到期。當線程喚醒以後必須重新去競争鎖。隻有獲得鎖以後才能繼續去執行。

white方法常用于線程間的通信和協調,例如生産者消費者模型。sleep()是Thread類中定義的靜态方法,它會使目前線程暫停執行一段時間不會釋放鎖。在調用sleep()方法時,線程不需要獲得任何鎖,它會讓線程暫停執行一段時間,直到時間到期或者被其他線程中斷。當線程被喚醒後會立即恢複執行,不需要重新競争鎖。

sleep()方法通常用于線程的延遲執行,例如定時任務等等。綜上所述,wait()和sleep()的主要差別在于:wait()會釋放鎖,而sleep()不會釋放鎖。

wait()需要在同步代碼快速中調用,而sleep()不需要。wait()需要被其他線程喚醒,而sleep()會在一定時間後自動喚醒。

wait()通常用于線程之間的通信和協調,而sleep()通常用于線程的延遲執行。不好意思,上司剛剛在開會,是以現在我沒法給你安排接下來的面試。你今天先回去,二面的時候我會再通知你。

讓面試官瘋狂加分的回答!Java中sleep和wait方法的差別。今天一共有兩輪面試,第一輪是技術面考察一下你的實際能力
讓面試官瘋狂加分的回答!Java中sleep和wait方法的差別。今天一共有兩輪面試,第一輪是技術面考察一下你的實際能力
讓面試官瘋狂加分的回答!Java中sleep和wait方法的差別。今天一共有兩輪面試,第一輪是技術面考察一下你的實際能力
讓面試官瘋狂加分的回答!Java中sleep和wait方法的差別。今天一共有兩輪面試,第一輪是技術面考察一下你的實際能力

繼續閱讀