在上節(jié)中解析了AbstractQueuedSynchronizer(AQS)中獨(dú)占模式對同步狀態(tài)獲取和釋放的實(shí)現(xiàn)過程。本節(jié)將會(huì)對共享模式的同步狀態(tài)獲取和釋放過程做一個(gè)解析。上一節(jié)提到了獨(dú)占模式和共享模式的區(qū)別,最主要的區(qū)別就是在同一時(shí)刻能否有多個(gè)線程同時(shí)獲取到同步狀態(tài)。

  1).共享模式同步狀態(tài)的獲取

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

  這個(gè)方法同獨(dú)占模式獲取同步狀態(tài)的acquire方法一樣,同樣也是一個(gè)模板方法,我們簡要回顧一下獨(dú)占模式下獲取同步狀態(tài)的acquire方法:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

//AbstractQueuedSynchronizer#acquirepublic final void acquire(int arg) {    if (!tryAcquire(arg) && acquireQueued(addWaiter(Node.EXCLUSIVE), arg))    //獲取鎖(tryAcquire)->構(gòu)造節(jié)點(diǎn)(addWaiter)->加入隊(duì)列(addWaiter)->自旋獲取鎖(acquireQueued)
    selfInterrupt();    //中斷當(dāng)前線程}

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式