可重入鎖的幾個核心要素對標AQS

在JUC包中AbstractQueuedSynchronizer經常被稱作隊列同步器(AQS),是JUC包內鎖的實現關鍵,那要實現一個可重入鎖需要幾個核心要素

  1. 需要一個記錄鎖狀態的變量state,state至少需要兩個值0、1,對state操作要保證安全性,需要使用到CAS(自旋)
  2. 需要有一個變量保存當前是那個線程持有鎖
  3. 需要一個列表存儲當前等待鎖的線程的列表
  4. 需要有一個可以喚醒和阻塞線程的操作

那對標AQS

  • 記錄鎖的狀態

  • 保存當前是那個線程持有的鎖,在AQS父類AbstractOwnableSynchronizer中

  • 存儲當前等待的線程列表

  • 喚醒和堵塞線程的操作

使用的是LockSupport工具類中的lock、pack方法

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