奈學:reaseShared共享式釋放鎖
共享鎖的釋放是透過呼叫releaseShared模版方法來實現的。大概步驟為:
-
呼叫tryReleaseShared嘗試釋放共享鎖,這裡必須實現為執行緒安全。
-
如果釋放了鎖,那麼呼叫doReleaseShared方法環迅後繼結點,實現喚醒的傳播。
對於支援共享式的同步元件(即多個執行緒同時訪問),它們和獨佔式的主要區別就是tryReleaseShared方法必須確保鎖的釋放是執行緒安全的(因為既然是多個執行緒能夠訪問,那麼釋放的時候也會是多個執行緒的,就需要保證釋放時候的執行緒安全)。由於tryReleaseShared方法也是我們自己實現的,因此需要我們自己實現執行緒安全,所以常常採用CAS的方式來釋放同步狀態。
/** * 共享模式下釋放鎖的模版方法。 * ,如果成功釋放則會呼叫 */public final boolean releaseShared(int arg) { //tryReleaseShared釋放指鎖 if (tryReleaseShared(arg)) { //釋放成功,必定呼叫doReleaseShared嘗試喚醒後繼結點 doReleaseShared(); return true; } return false; }
本文來源於:奈學開發者社群,如有侵權,請聯絡我刪除~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69976011/viewspace-2712741/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 逐行分析AQS原始碼(3)——共享鎖的獲取與釋放AQS原始碼
- ZooKeeper 分散式鎖 Curator 原始碼 02:可重入鎖重複加鎖和鎖釋放分散式原始碼
- 奈學教你五分鐘學會分散式事務分散式
- Java 自動釋放鎖的幾種實現Java
- 逐行分析AQS原始碼(2)——獨佔鎖的釋放AQS原始碼
- 奈學乾貨分享:分散式CAP實踐分析分散式
- MySQL的共享鎖和獨佔鎖MySql
- 學習etcd分散式鎖分散式
- MySQL 共享鎖 (lock in share mode),排他鎖 (for update)MySql
- 關於分散式鎖原理的一些學習與思考-redis分散式鎖,zookeeper分散式鎖分散式Redis
- 分散式鎖 (資源在程式而非執行緒之間共享)分散式執行緒
- 奈飛經濟學
- 資料庫中的共享鎖與排他鎖資料庫
- 玩客雲戰略釋出:共享計算向普通使用者開放
- Java鎖最全詳解:樂觀鎖/悲觀鎖+公平鎖/非公平鎖+獨享鎖/共享鎖Java
- MySQL鎖(讀鎖、共享鎖、寫鎖、S鎖、排它鎖、獨佔鎖、X鎖、表鎖、意向鎖、自增鎖、MDL鎖、RL鎖、GL鎖、NKL鎖、插入意向鎖、間隙鎖、頁鎖、悲觀鎖、樂觀鎖、隱式鎖、顯示鎖、全域性鎖、死鎖)MySql
- 奈學:Executor框架的概述框架
- 自助式BI,釋放企業資料潛力!
- [分散式][分散式鎖]淺談分散式鎖分散式
- MySQL/InnoDB中,樂觀鎖、悲觀鎖、共享鎖、排它鎖、行鎖、表鎖、死鎖概念的理解MySql
- MySQL 的共享鎖和排它鎖以及自動提交MySql
- Lock的獨佔鎖和共享鎖的比較分析
- 使用 python 實現簡單的共享鎖和排他鎖Python
- linux埠釋放Linux
- 釋放ip埠
- linux 釋放埠Linux
- 一起來學習分散式鎖分散式
- ReentrantReadWriterLock原始碼(state設計、讀寫鎖、共享鎖、獨佔鎖及鎖降級)原始碼
- 十九、Redis分散式鎖、Zookeeper分散式鎖Redis分散式
- 使用redis分散式鎖解決併發執行緒資源共享問題Redis分散式執行緒
- Java鎖?分散式鎖?樂觀鎖?行鎖?Java分散式
- 意向共享鎖與意向排它鎖:詳解與應用
- 【問答分享第一彈】MySQL鎖總結:MySQL行鎖、表鎖、排他鎖、共享鎖的特點MySql
- 《神佑:釋放》新職業刺客3月9日登場 再現韓式MMO動作美學
- Taro 3.1 beta 釋出: 開放式架構新增 4 端支援架構
- centos 釋放內容CentOS
- 自動釋放池
- 分散式鎖分散式