原创 面試必考AQS-共享鎖的申請與釋放,傳播狀態

引子 前文《面試必考AQS-AQS源碼全局分析》已經對AQS中對於共享 鎖的申請與釋放流程進行了總結。而對於申請與釋放,在AQS中提現的是與鎖並無關係,而是針對同步隊列的操作,向同步隊列中添加、移除Node實例對象,操作Node中的線程對

原创 面試必考AQS-await和signal的實現原理

Condition接口 這個接口爲我們提供了2類方法,await()和signal(),其實現類ConditionObject,是AQS中的一個子類。在介紹AQS結構的文章中,ConditionObject類被跳過了,這個類的存在與CLH

原创 源碼解讀 - Tcc-Transaction框架(三)dubbo支持

前言 回到master-1.2.x分支,繼續瀏覽git log,這次選擇update the version to 1.2.0 這次提交,注意這個分支編譯會報錯,調整dubbo版本爲2.5.3才行。 正文 項目整體結構: 這個版本中,增

原创 源碼解讀 - Tcc-Transaction框架(四)迴歸最新版本思路

前言 這次我們直接回到主幹分支master-1.2.x進行分析。 正文 大致瀏覽一下各個模塊,主要模塊沒有增加。 tcc-transaction-server目前還是先不看。 tcc-transaction-dubbo沒變動。 tcc-t

原创 源碼解讀 - Tcc-Transaction框架(二)職責劃分及功能調整

前言 回到master-1.2.x分支,繼續瀏覽git log,在1.0.3版本後,作者更新較爲頻繁,每個月都有提交,在2016/6/4日有一次版本變更1.1.0,但是不要急,根據這段時間文件變更內容看,東西修改了不少,但是1.1.0之後

原创 JUC併發編程 - ReentrantLock源碼分析

前言 前面分析了AQS類的源碼,但真正實現AQS的實現類都在JUC中,當然AQS也是JUC的一部分,只是它不面向應用,除非自己去繼承實現一套邏輯。 在java的java.util.concurrent包,簡稱JUC,其內包含的類都與多線程

原创 面試必考AQS-AQS源碼全局分析

源碼劃分 在《面試必考AQS-AQS概覽》中我將AQS的源碼,大致分爲六部分,總結一下分別是: 鏈表節點類、鏈表頭尾指針 條件對象 同步器狀態/資源 用於cas操作的變量及方法 一些實例方法操作鏈表及同步器狀態狀態 一些抽象方法等待被實現

原创 面試必考AQS-排它鎖的申請與釋放

引子 前文《面試必考AQS-排它鎖的申請與釋放》已經對AQS中對於排它鎖的申請與釋放流程進行了總結。而對於申請與釋放,在AQS中提現的是與鎖並無關係,而是針對同步隊列的操作,向同步隊列中添加、移除Node實例對象,操作Node中的線程對象

原创 面試必考AQS-AQS概覽

AQS介紹 AQS的含義 AQS是java.util.concurrent.locks.AbstractQueuedSynchronizer的簡稱,直譯就是“抽象隊列同步器”,它是java中大部分lock類的間接實現者。AQS中實現的各種