深入淺出理解鎖之—— AbstractQueuedSynchronizer

深入淺出理解鎖之—— AbstractQueuedSynchronizer

在Java中,多線程的情況下需要鎖來保證數據的安全。

鎖一般分爲兩類:sychronized 和 Lock

  • sychronized利用的是指令級別的monitor-entermonitor-exit
  • Lock 使用的則是代碼級別實現的。在Doug Lea大神的操刀下利用CAS + 自旋 + volatile變量實現。

而在實現之後,並且抽象出了一個實現鎖的基礎類AbstractQueuedSynchronizer,通過這個類可以快速的實現符合自己要求的鎖。

本篇博客是在學習了AQS的代碼之後,由淺入深的從最基礎的知識一直到AQS的深入理解。

限於水平有限,如果有寫的不對的地方還望各位多多指教

一,基礎知識——LockSupport

AQS理解之一,基礎知識——LockSupport

二,自己設計一個鎖

AQS理解之二,自己設計一個鎖

三,由剛纔寫的鎖轉變成一個公平鎖

AQS理解之三,由剛纔寫的鎖轉變成一個公平鎖

四,看看我們寫的和ReentrantLock的公平不公平鎖的區別

AQS理解之四,看看我們寫的和 ReentrantLock 的公平不公平鎖的區別

五,看看AQS的代碼實現

AQS理解之五—併發編程中AQS的理解

六,AQS的其他實現類

AQS理解之六,AQS的其他實現類

七,AQS的條件隊列

AQS理解之七——AQS中的條件隊列

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章