第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

調(diào)用 wait() 方法時(shí)發(fā)生了什么

調(diào)用 wait() 方法時(shí)發(fā)生了什么

達(dá)令說 2022-06-15 15:15:19
我在 Java 教科書中閱讀了以下與多線程有關(guān)的內(nèi)容。對(duì)于調(diào)用 wait() 或 notify() 的線程,該線程必須是該對(duì)象的鎖的所有者。當(dāng)線程等待時(shí),它會(huì)暫時(shí)釋放鎖以供其他線程使用,但它會(huì)再次需要它來繼續(xù)執(zhí)行。我對(duì)條款的含義感到困惑當(dāng)線程等待時(shí),它會(huì)暫時(shí)釋放鎖以供其他線程使用我不明白那個(gè)條款在說什么。是說當(dāng)wait()方法被調(diào)用時(shí),它實(shí)際上是在wait()返回之前釋放鎖(即這發(fā)生在調(diào)用者不知道的情況下)?或者它只是暗示wait(timeout)在超時(shí)時(shí)間過去時(shí)釋放鎖?如果是前者,為什么要先釋放鎖notify()?這似乎是一個(gè)模糊且解釋不清的陳述。
查看完整描述

3 回答

?
RISEBY

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊

對(duì)于調(diào)用 wait() 或 notify() 的線程,該線程必須是該對(duì)象的鎖的所有者。

否則,會(huì)發(fā)生運(yùn)行時(shí)錯(cuò)誤,并且不會(huì)執(zhí)行其余代碼。

當(dāng)線程等待時(shí),它會(huì)暫時(shí)釋放鎖以供其他線程使用

更詳細(xì)地說,調(diào)用wait()會(huì)執(zhí)行以下操作:

  • 鎖被釋放

  • 當(dāng)前線程在監(jiān)視器中注冊(cè)為等待

  • 處理器切換到其他準(zhǔn)備執(zhí)行的線程

然后,一些線程調(diào)用notify()notifyAll(),這會(huì)導(dǎo)致在此監(jiān)視器上注冊(cè)為等待的一個(gè)或所有線程從等待集移動(dòng)到就緒集,等待空閑處理器執(zhí)行。

但它會(huì)再次需要它來繼續(xù)執(zhí)行。

這意味著線程的執(zhí)行將繼續(xù)執(zhí)行同步語句以重新獲得鎖定。獲得鎖后,wait()方法返回。wait(timeout)的不同之處在于,除了notify()notifyAll()之外,它還可以在超時(shí)時(shí)返回。

總之,您需要了解線程如何在以下 4 種狀態(tài)之間切換:

  • 在處理器上運(yùn)行

  • 在同步語句上阻塞

  • 等待通知

  • 準(zhǔn)備執(zhí)行并等待空閑處理器


查看完整回答
反對(duì) 回復(fù) 2022-06-15
?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊

當(dāng)一個(gè)線程調(diào)用wait()時(shí),它會(huì)暫時(shí)釋放對(duì)象的監(jiān)視器(鎖),直到它收到另一個(gè)線程的通知。這樣,一個(gè)線程可以心甘情愿地將對(duì)象監(jiān)視器的控制權(quán)(它首先擁有的)交給另一個(gè)線程??纯?a >文檔:

在另一個(gè)線程發(fā)出可能發(fā)生某些特殊事件的通知之前,調(diào)用wait()不會(huì)返回——盡管不一定是該線程正在等待的事件(因此始終wait()在測(cè)試等待條件的循環(huán)內(nèi)調(diào)用)。

...

當(dāng)wait()被調(diào)用時(shí),線程釋放鎖并暫停執(zhí)行。在未來某個(gè)時(shí)間,另一個(gè)線程將獲取相同的鎖并調(diào)用 Object.notifyAll,通知所有等待該鎖的線程發(fā)生了重要的事情。


查看完整回答
反對(duì) 回復(fù) 2022-06-15
?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊

當(dāng)一個(gè)線程調(diào)用 wait 時(shí),該線程立即釋放鎖,然后進(jìn)入休眠狀態(tài),直到超時(shí)到期(如果有),或者直到它收到通知,當(dāng)另一個(gè)線程獲得等待線程放棄并調(diào)用的相同鎖時(shí),就會(huì)發(fā)生這種情況通知它(調(diào)度程序也必須從任何其他等待線程中選擇等待線程;調(diào)用通知不會(huì)通知給定線程,它告訴調(diào)度程序從給定鎖的等待集中選擇一個(gè)線程來通知)。

一旦線程被通知喚醒,它必須重新獲得鎖才能離開等待方法,因?yàn)榫€程仍然在同步方法或塊內(nèi)。這就是引用的意思,當(dāng)它說線程需要鎖才能恢復(fù)執(zhí)行時(shí)。


查看完整回答
反對(duì) 回復(fù) 2022-06-15
  • 3 回答
  • 0 關(guān)注
  • 148 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)