我讀鮑勃叔叔的乾淨的代碼第13章的結論,一個鎖定部分包括以下內容:清潔代碼 - 調用從另一個
不要鎖定不需要被鎖定的代碼區域。避免調用另一個鎖定的部分。
爲什麼建議不要從另一個調用一個鎖定部分(假設你持有折返鎖)?對我來說這似乎完全可行。
我讀鮑勃叔叔的乾淨的代碼第13章的結論,一個鎖定部分包括以下內容:清潔代碼 - 調用從另一個
不要鎖定不需要被鎖定的代碼區域。避免調用另一個鎖定的部分。
爲什麼建議不要從另一個調用一個鎖定部分(假設你持有折返鎖)?對我來說這似乎完全可行。
避免調用另一個被鎖定的部分。
指的是被不同的鎖鎖定的部分,如果你沒有以相同的順序獲得鎖,那麼你有可能導致死鎖。您可以在Java tutorials中找到此問題的一個有趣示例。
我以爲同樣多,但不幸的是,案文並沒有說明這一點。 – njk2015
如果您需要同時鎖定2個或更多對象,則無法通過其他方式調用另一個鎖定部分。 爲避免死鎖,請始終以相同順序鎖定對象。
我認爲這意味着從另一個鎖定部分調用一個鎖定部分(使用不同的鎖定)將導致死鎖潛力。 – Alexander