AQS原始碼閱讀筆記(一)

2022-05-02 09:27:13 字數 656 閱讀 8912

aqs原始碼閱讀筆記

先看下這個類張非常重要的乙個靜態內部類node。如下:

static final class node 

//查詢當前節點的前乙個節點

final node predecessor() throws nullpointerexception

node()

node(thread thread, node mode)

node(thread thread, int waitstatus)

}

接著,我們再來看看aqs中的字段:

private transient volatile node head;

private transient volatile node tail;

private volatile int state;

其中, node和tail分別表示頭結點和尾節點,這兩個欄位是用來的保證同步佇列原子入(出)隊操作(具體後續在分析具體的實現類中說)。

state在此處可以簡單理解為加鎖的次數(每次加鎖,state + 1,每次釋放鎖, state - 1,當state = 0的時候,就表示沒有執行緒持有鎖 )。

後續結合具體的實現類來分析各種加鎖,解鎖。

AQS原始碼閱讀

aqs是用來構建鎖或者其它同步器元件的重量級基礎框架及整個juc體系的基石,通過內建的fifo佇列來完成資源獲取執行緒的排隊工作,並通過乙個int類變數 表示持有鎖的狀態。我將以reentrantlock為切入點,閱讀asq原始碼。注 reentrantlock預設是執行緒不安全的,當然也可以設定為...

AQS原始碼閱讀感想

1.aqs核心原理 aqs擁有變數state,通過cas設定state得值是否成功判斷是否獲得鎖,原始碼如下 compareandsetstate c,nextc protected final boolean compareandsetstate int expect,int update 獲得鎖...

閱讀原始碼筆記一

一 build public sqlsessionfactory build inputstream inputstream build作用 建立乙個sqlsessionfactory 返回值 inputstream輸入流 二 build public sqlsessionfactory build...