鎖的一些概念

2021-10-03 02:45:09 字數 519 閱讀 2349

使用reentrantlock獲取鎖的時候會判斷當前執行緒是否為獲取鎖的執行緒,如果是則將同步的狀態 +1 ,釋放鎖的時候則將狀態 -1。只有將同步狀態的次數置為 0 的時候才會最終釋放鎖。

使用reentrantreadwritelock,同時維護一對鎖:讀鎖和寫鎖。當寫執行緒訪問時則其他所有鎖都將阻塞,讀執行緒訪問時則不會。通過讀寫鎖的分離可以很大程度的提高併發量和吞吐量。

可以建立一張表,將其中的某個字段設定為唯一索引,當多個請求過來的時候只有新建記錄成功的請求才算獲取到鎖,當使用完畢刪除這條記錄的時候即釋放鎖。

存在的問題:

解決方案:

使用setnx(key) setex(timeout)命令,只有在該key不存在的時候建立這個key,就相當於獲取了鎖。由於有超時時間,所以過了規定時間會自動刪除,這樣也可以避免死鎖。

可以參考:

基於 redis 的分布式鎖

鎖的一些概念

作業需要乙個目標之前分配目標,這樣在用目標是不用再等,可保證完成所需功能,這叫目標的分配。可用alcobj命令預先分配目標,用dlcobj解除分配 目標是根據要他們做什麼來分配的 讀或者修改 和他們是否可以共享。檔案和成員總是以 shrrd來分配。而資料用規定所狀態來分配鎖的級別。鎖狀態標誌使用的目...

關鍵字鎖的一些概念

無鎖 偏向鎖 輕量級鎖 重量級鎖 隨著競爭情況公升級 鎖可以公升級但是不能降級 比如在單執行緒下stringbuffer 就是無鎖 偏向鎖 總是由單執行緒訪問同步 塊,會在物件頭和棧針的鎖記錄儲存鎖偏向的執行緒id jdk6 7預設啟用 但是啟動後幾秒才啟用 關閉延遲立即啟用,啟用加上 xx 0 字...

關於執行緒一些鎖的概念和擴充套件

一.擴充套件 臨界區 指的是乙個訪問共用資源 例如 共用裝置或是共用儲存器 的程式片段,而這些共用資源又無法同時被多個執行緒訪問的特性。當有執行緒進入臨界區段時,其他執行緒或是程序必須等待 例如 bounded waiting 等待法 有一些同步的機制必須在臨界區段的進入點與離開點實現,以確保這些共...