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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從方法返回的同步代碼中的對象

從方法返回的同步代碼中的對象

慕碼人8056858 2023-09-27 17:02:28
我想要一個同步塊,其中要同步的對象是從方法調(diào)用返回的:...synchronized( someGetMethod() ) {// synchronized block}...是否假設(shè)“someGetMethod”是同步的或僅“//同步塊”部分?先感謝您編輯:我有一個集合(要鎖定的對象的映射)。“someGetMethod”檢查地圖上是否存在對象,如果不存在,它將添加該對象并返回它以便鎖定。從下面的答案中,我了解到“someGetMethod”可以返回Map上已有的值,但在進入同步塊之前,切換到另一個線程,這可能會刪除上述值。因此,另一個線程可能通過“someGetMethod”進行相同的檢查,現(xiàn)在得到不同的結(jié)果。所以看來我應(yīng)該從同步塊中進行刪除,是否有更好的選擇?
查看完整描述

2 回答

?
POPMUISE

TA貢獻1765條經(jīng)驗 獲得超5個贊

這:


synchronized( someGetMethod() ) {

// synchronized block

}

是相同的


Object obj = someGetMethod();

synchronized( obj ) {

// synchronized block

}

所以不,someGetMethod()不是以同步方式調(diào)用。


如果你想讓它同步,你要么必須聲明方法synchronized,要么顯式同步,例如:


synchronized (this) {

  synchronized( someGetMethod() ) {

    // synchronized block

  }

}


查看完整回答
反對 回復(fù) 2023-09-27
?
守著星空守著你

TA貢獻1799條經(jīng)驗 獲得超8個贊

someGetMethod()是在線程鎖定與表達式結(jié)果關(guān)聯(lián)的監(jiān)視器之前計算的表達式。

14.19。同步語句

同步語句是通過首先評估表達式來執(zhí)行的。然后:

  • 如果表達式的求值由于某種原因突然完成,那么同步語句也會因為同樣的原因突然完成。

  • 否則,如果 Expression 的值為 null,則拋出 NullPointerException。

  • 否則,設(shè)Expression的非空值為V。執(zhí)行線程鎖定與V關(guān)聯(lián)的監(jiān)視器。然后執(zhí)行該Block,然后有一個選擇:

    • 如果塊的執(zhí)行正常完成,則監(jiān)視器被解鎖并且同步語句正常完成。

    • 如果該塊的執(zhí)行由于任何原因突然完成,則監(jiān)視器將被解鎖并且同步語句由于相同原因突然完成。

您無法輸入同步塊,計算表達式,然后查看與結(jié)果關(guān)聯(lián)的監(jiān)視器。你是如何進入這個塊而不首先評估它的表達式的?你用什么顯示器someGetMethod()來同步自己?


查看完整回答
反對 回復(fù) 2023-09-27
  • 2 回答
  • 0 關(guān)注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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