真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

AQS介紹

AQS是一個(gè)抽象類(lèi),提供了一套通用的控制同步狀態(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)型)操作不同,來(lái)實(shí)現(xiàn)的功能不同。

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

成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,先為恭城等服務(wù)建站,恭城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為恭城企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

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暴露給子類(lèi)可以使用的方法如下:

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

AQS框架內(nèi)部通過(guò)一個(gè)內(nèi)部類(lèi)ConditionObject,實(shí)現(xiàn)了Condition接口,以此來(lái)為子類(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種類(lèi)型,共享節(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)。


標(biāo)題名稱(chēng):多線程(九、AQS原理-簡(jiǎn)介)
網(wǎng)站網(wǎng)址:http://weahome.cn/article/gegidp.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部