多線程(九、AQS原理-簡(jiǎn)介)-創(chuàng)新互聯(lián)

AQS介紹

AQS是一個(gè)抽象類,提供了一套通用的控制同步狀態(tài),線程阻塞/喚醒,等待隊(duì)列管理的操作。

平時(shí)用的ReentrantLock,CountDownLatch,Semaphore(信號(hào)量)都是基于AQS提供API來(lái)實(shí)現(xiàn)的,他們的不同之處就是對(duì)于AQS內(nèi)部的同步狀態(tài)(synchronization state,int類型)操作不同,來(lái)實(shí)現(xiàn)的功能不同。

多線程(九、AQS原理-簡(jiǎn)介)

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到越秀網(wǎng)站設(shè)計(jì)與越秀網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋越秀地區(qū)。

AQS基于同步狀態(tài)(synchronization state)主要解決了3個(gè)問(wèn)題:

1、資源的訪問(wèn)是共享的還是獨(dú)占的,比方說(shuō)ReentrantLock是獨(dú)占的,ReentrantReadWriteLock.ReadLock是共享的

2、如何管理等待的線程,使用等待隊(duì)列

3、無(wú)法獲取資源,線程的超時(shí)和中斷機(jī)制

AQS的主要方法

如何使用同步狀態(tài)(synchronization state)才是繼承AQS的使用者考慮的問(wèn)題。

AQS暴露給子類可以使用的方法如下:

1、tryAcquire 獨(dú)占資源獲取
2、tryRelease 獨(dú)占資源釋放
3、tryAcquireShared 共享資源獲取
4、tryReleaseShared 共享資源釋放
5、isHeldExclusively 是否占用獨(dú)占資源

AQS框架內(nèi)部通過(guò)一個(gè)內(nèi)部類ConditionObject,實(shí)現(xiàn)了Condition接口,以此來(lái)為子類提供條件等待的功能。

多線程(九、AQS原理-簡(jiǎn)介)

AQS的內(nèi)部私有方法:

關(guān)于同步狀態(tài)(synchronization state)AQS提供了3個(gè)方法

1、setState 設(shè)置同步狀態(tài)
2、getState 獲取同步狀態(tài)
3、CAS的compareAndSetState 基于unsafe的CAS設(shè)置同步狀態(tài)

等待隊(duì)列的方法

1、enq 入隊(duì)操作指定節(jié)點(diǎn)(后面介紹),可以進(jìn)行初始化
2、addWaiter 入隊(duì)操作節(jié)點(diǎn),節(jié)點(diǎn)是當(dāng)前線程
3、setHead 設(shè)置頭節(jié)點(diǎn)
4、unparkSuccessor 喚醒當(dāng)前節(jié)點(diǎn)的后繼節(jié)點(diǎn)
5、doReleaseShared 釋放共享節(jié)點(diǎn)
6、setHeadAndPropagate 設(shè)置頭節(jié)點(diǎn),并依次喚醒后繼節(jié)點(diǎn)

操作資源的方法

1、acquire public final 獨(dú)占地獲取資源
2、acquireInterruptibly public final 獨(dú)占地獲取資源(響應(yīng)中斷)
3、acquireInterruptibly public final 獨(dú)占地獲取資源(限時(shí)等待)
4、acquireShared public final 共享地獲取資源
5、acquireSharedInterruptibly public final 共享地獲取資源(響應(yīng)中斷)
6、tryAcquireSharedNanos public final 共享地獲取資源(限時(shí)等待)
7、等等等........

等待隊(duì)列

等待隊(duì)列是以節(jié)點(diǎn)(Node)為單位,節(jié)點(diǎn)里包裝了線程。

多線程(九、AQS原理-簡(jiǎn)介)

節(jié)點(diǎn)有2種類型,共享節(jié)點(diǎn)和獨(dú)占節(jié)點(diǎn),獨(dú)占和共享

多線程(九、AQS原理-簡(jiǎn)介)

節(jié)點(diǎn)狀態(tài)(waitStatus),共享節(jié)點(diǎn)和獨(dú)占節(jié)點(diǎn)的狀態(tài)使用值是不一樣的。

1、節(jié)點(diǎn)默認(rèn)狀態(tài)為0。
多線程(九、AQS原理-簡(jiǎn)介)
2、其中獨(dú)占結(jié)點(diǎn)使用其中的CANCELLED(1)、SIGNAL(-1)、CONDITION(-2),共享結(jié)點(diǎn)使用其中的CANCELLED(1)、SIGNAL(-1)、PROPAGATE(-3)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享名稱:多線程(九、AQS原理-簡(jiǎn)介)-創(chuàng)新互聯(lián)
新聞來(lái)源:http://muchs.cn/article48/dpjihp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、移動(dòng)網(wǎng)站建設(shè)、虛擬主機(jī)電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司