重入鎖的理解

Adrian_Dai發表於2018-03-14

可重入鎖

(以下解釋來自部落格 http://http://blog.csdn.net/joker_apple/article/details/52790181)

所謂重入鎖,指的是以執行緒為單位,當一個執行緒獲取物件鎖之後,這個執行緒可以再次獲取本物件上的鎖,而其他的執行緒是不可以的

 synchronized 和   ReentrantLock 都是可重入鎖
 可重入鎖的意義在於防止死鎖
 實現原理實現是通過為每個鎖關聯一個請求計數和一個佔有它的執行緒。
 當計數為0時,認為鎖是未被佔有的。執行緒請求一個未被佔有的鎖時,jvm講記錄鎖的佔有者,並且講請求計數器置為1 。
 如果同一個執行緒再次請求這個鎖,計數將遞增;
 每次佔用執行緒退出同步塊,計數器值將遞減。直到計數器為0,鎖被釋放。
 
 關於父類和子類的鎖的重入:
 子類覆寫了父類的synchonized方法,然後呼叫父類中的方法,
 此時如果沒有重入的鎖,那麼這段程式碼將產生死鎖。

相關文章