讀寫鎖 可重入鎖

2021-10-08 18:40:57 字數 434 閱讀 3758

讀寫鎖就是分了兩種情況,一種是讀時的鎖,一種是寫時的鎖,它允許多個執行緒同時讀共享變數,但是只允許乙個執行緒寫共享變數,當寫共享變數的時候也會阻塞讀的操作。這樣在讀的時候就不會互斥,提高讀的效率。

可以用來讀寫快取,步驟:1、加讀鎖,從快取讀取key對應的value;2、若讀取到,則返回,並釋放讀鎖;若沒讀取到,則釋放讀鎖,然後立刻加寫鎖,再判斷此時value是否是空,若還是空則從db中查詢得到結果value,並寫入到快取中,釋放寫鎖,加讀鎖。

用讀寫鎖寫乙個快取

可重入鎖指的是在同乙個執行緒內如果你的外層函式已經獲得了鎖,那麼當你的內層函式嘗試獲取鎖時也能獲得鎖,也就是通過乙個執行緒再次進入同步**塊時可以獲得自己已經獲得的鎖,而不可重入則反之。看下簡單的示例

void

dosth()

voiddo(

)

可重入鎖 讀寫鎖

reentrantlock 重入鎖。表示該鎖能夠支援乙個執行緒對資源的重複加鎖.任意執行緒在獲取到鎖之後能夠再次獲取該所而不會被鎖阻塞。之前寫的mutex是乙個不支援的重入的獨佔鎖。實現可重入 執行緒再次加鎖 鎖需要去識別獲取鎖的執行緒是否為當前佔據鎖的執行緒,如果是,則再次獲取。鎖的最終釋放 執行...

鎖 可重入鎖

reetrantlick相對於 synchronized 的優勢 reentrantlock獨有的能力 1.reentrantlock可以指定是公平鎖還是非公平鎖。而synchronized只能是非公平鎖。所謂的公平鎖就是先等待的執行緒先獲得鎖。2.reentrantlock提供了乙個conditi...

可重入鎖 不可重入鎖

可重入鎖指的是可重複可遞迴呼叫的鎖,在外層使用鎖之後,在內層仍然可以使用,並且不發生死鎖 前提是同乙個物件或者類 note reentrantlock和synchronized都是可重入鎖 1 public class testlock 78 public synchronized void tes...