AQS.accquire
生活随笔
收集整理的這篇文章主要介紹了
AQS.accquire
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
acquire是AQS中的方法,如果CAS操作未能成功,說明state已經不為0,此時繼續acquire(1)操作
大家思考一下,acquire方法中的1的參數是用來做什么呢?
這個方法的主要邏輯是
1. 通過tryAcquire嘗試獲取獨占鎖,如果成功返回true,失敗返回false?
2. 如果tryAcquire失敗,則會通過addWaiter方法將當前線程封裝成Node添加到AQS隊列尾部
3. acquireQueued,將Node作為參數,通過自旋去嘗試獲取鎖。
public final void acquire(int arg) { if (!tryAcquire(arg) && acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) selfInterrupt(); }?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的AQS.accquire的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: compareAndSwapInt
- 下一篇: NonfairSync.tryAcqui