Synchronized可重入鎖通俗易懂的簡單分析

2022-07-01 08:18:07 字數 966 閱讀 3968

可重入鎖概念:

當乙個執行緒得到乙個物件鎖後,再次請求此物件時時可以再次得到該物件的鎖的,這也證明synchronized方法/塊的內部呼叫本類的其他synchronized方法/塊時,時永遠可以得到鎖的。

public

class

service

synchronized

public

void

service2()

synchronized

public

void

service3()

}

public

class

synctest

}

輸出結果如下:

執行結果說明:

自己可以再次獲取自己的內部鎖。比如有一條執行緒獲得了某個物件多的鎖,此時這個物件鎖還沒有釋放,當其再次想要獲取這個物件的鎖的時候還是可以獲取的,如果不可鎖重入的話就會造成死鎖

可重入鎖也支援父子類繼承的環境中:

父類建立

public

class

main

catch

(interruptedexception e) }}

子類建立

public

class sub extends

main

} catch

(interruptedexception e) }}

結果如下:

結果說明:

當存在父子類程序關係時,子類時完全可以通過"可重入鎖"呼叫父類的同步方法的

Synchronized可重入鎖分析

可重入鎖又稱遞迴鎖,是指在同乙個執行緒在外層方法獲取鎖的時候,再進入該執行緒的內層方法會自動獲取鎖 前提是鎖物件必須是同一物件或者class 不會因為之前已經獲取過還沒實方而發生阻塞。即同一執行緒可執行多個持有同乙個鎖的方法。先來一段 public class reentrantsynchroniz...

10 Synchronized 悲觀鎖,可重入鎖

synchronized 悲觀鎖,可重入鎖 特點 可重入的鎖 可重入鎖,乙個獲得的鎖的執行緒沒執行完可以繼續獲得該鎖。執行緒占用鎖的時候,如果執行的同步 出現異常,會自動將鎖讓出。同步 塊的 是同步執行的 一次執行完 而非同步 塊的 可以非同步執行。要求鎖的獲取和釋放存在同乙個塊結構中 當獲取了多個...

可重入函式 可重入核心

可重入函式這一概念早有接觸,但一直未有系統的理解,最近閱讀 apue 訊號一章時,其中講解很到位,故總結如下。訊號作為一種軟中斷,能夠被程序給捕獲,因而也就中斷程序的正常執行,轉而去執行訊號處理程式,最後再返回到原程序繼續正常執行。然而,當程序正在執行 malloc 動態記憶體分配時,訊號產生從而轉...