[英]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.