共享模式acquire實現(xiàn)流程

上文我們講解了AbstractQueuedSynchronizer獨占模式的acquire實現(xiàn)流程,本文趁熱打鐵繼續(xù)看一下AbstractQueuedSynchronizer共享模式acquire的實現(xiàn)流程。連續(xù)兩篇文章的學(xué)習(xí),也可以對比獨占模式acquire和共享模式acquire的區(qū)別,加深對于AbstractQueuedSynchronizer的理解。

先看一下共享模式acquire的實現(xiàn),方法為acquireShared和acquireSharedInterruptibly,兩者差別不大,區(qū)別就在于后者有中斷處理,以acquireShared為例:

 1 public final void acquireShared(int arg) { 2     if (tryAcquireShared(arg) < 0) 3         doAcquireShared(arg); 4 }

這里就能看出第一個差別來了:獨占模式acquire的時候子類重寫的方法tryAcquire返回的是boolean,即是否tryAcquire成功;共享模式acquire的時候,返回的是一個int型變量,判斷是否<0。doAcquireShared方法的實現(xiàn)為:

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

 1 private void doAcquireShared(int arg) { 2     final Node node = addWaiter(Node.SHARED); 3     boolean failed = true; 4     try { 5         boolean&nbs
        
		

網(wǎng)友評論