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...