簡體   English   中英

同步對象處理是否傳遞給Java中的調用函數?

[英]Does a synchronized objects handle pass to a called function in Java?

所以可以說我有以下代碼:

public void bar(){
  synchronized(foo){foo.remove(0)}
}

public void doStuff(){
  synchronized(foo){
     bar()
  }
}

同步是否會意識到我所在的當前鏈具有此鎖並繼承它,否則它將死鎖?

您從同步塊獲得的鎖是可重入的 這不會死鎖,線程可以多次獲取同一對象的鎖。

請參閱內部鎖和同步

正如Mat所說的那樣,它不會死鎖。

我怎么看

這種鎖定機制不取決於方法調用,而是取決於控制流。 單個線程如何執行語句以及線程何時遇到同步塊,然后它要求在同步簽名中鎖定對象。

如果具有它,則進入其他狀態,它將在對象的鎖池中等待,直到得到通知。

執行doStuff()的線程已經攜帶了鎖,因此這就是為什么沒有死鎖的情況

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM