[英]Referencing a synchronized method inside another synchronized method
我有兩種方法。
它們都是方法同步的。如果我從另一個方法調用一個方法,那將是一個死鎖情況嗎?
不,假設兩個方法都在同一個類中(並且都是static
或兩者都不是static
)。 只有當嘗試進入的線程可以獲取監視器對象時才會輸入synchronized
方法(例如, this
)。 由於線程已經獲得了監視器,它可以簡單地輸入第二種方法而不會有任何進一步的麻煩。
如果thread 1
獲得A
上的鎖定並且還想要鎖定B
Thread 2
在B
上有一個鎖,並希望鎖定A
這是一個僵局。 此外,一切皆有可能。
這取決於:
然后是的,你可以陷入僵局。
但是,如果您在同一個對象上討論同步方法,則無法獲得死鎖:對象的監視器是可重入的:如果您已經擁有它,則可以再次請求監視器(輸入同步阻止同一個對象)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.