ReentrantReadWriteLock降級鎖的應用-看過程瞭解它的原理(作個筆記加深自己的理解)
阿新 • • 發佈:2020-10-15
資料文件: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才能拿到寫鎖,然後進行更新資料。
程式碼列印語句的執行地方: