1. 程式人生 > 實用技巧 >ReentrantReadWriteLock降級鎖的應用-看過程瞭解它的原理(作個筆記加深自己的理解)

ReentrantReadWriteLock降級鎖的應用-看過程瞭解它的原理(作個筆記加深自己的理解)

資料文件:https://www.jianshu.com/p/0f4a1995f57d

ReentrantReadWriteLock會使用兩把鎖來解決問題,一個讀鎖,一個寫鎖。

  執行緒進入讀鎖的前提條件:

   1. 沒有其他執行緒的寫鎖

    2. 沒有寫請求,或者有寫請求但呼叫執行緒和持有鎖的執行緒是同一個執行緒

  進入寫鎖的前提條件:

    1. 沒有其他執行緒的讀鎖

    2. 沒有其他執行緒的寫鎖

來源(https://blog.csdn.net/zxhello/article/details/80284048

沒有使用鎖降級的過程:

沒有使用鎖降級的時候,執行緒1執行到更新資料的時候,這時候來不及獲取讀鎖,執行緒2就已經獲取寫鎖了,所以導致了執行緒1獲取的資料是執行緒2更新之後的資料。

使用鎖降級的執行過程:

有使用降級鎖的時候,執行緒1執行到睡眠之前的時候的,因為此有讀鎖,所以執行緒2無法進來,要等執行緒1執行完畢釋放讀鎖的時候,執行緒2才能拿到寫鎖,然後進行更新資料。

程式碼列印語句的執行地方: