doAcquireSharedInterruptibly
生活随笔
收集整理的這篇文章主要介紹了
doAcquireSharedInterruptibly
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一旦ThreadA被喚醒,代碼又會繼續回到doAcquireSharedInterruptibly中來執行。如果當前state滿足=0的條件,則會執行setHeadAndPropagate方法
private void doAcquireSharedInterruptibly(int arg) throws InterruptedException { final Node node = addWaiter(Node.SHARED); boolean failed = true; try { for (;;) {//被喚醒的線程進入下一 次循環繼續判斷 final Node p = node.predecessor(); if (p == head) { int r = tryAcquireShared(arg); if (r >= 0) { setHeadAndPropagate(node, r); p.next = null; // 把當前節點移除aqs隊列 failed = false; return; } } if (shouldParkAfterFailedAcquire(p, node) && parkAndCheckInterrupt()) throw new InterruptedException(); } } finally { if (failed) cancelAcquire(node); } }?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的doAcquireSharedInterruptibly的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AQS.doReleaseShared
- 下一篇: setHeadAndPropagate