(blocker == null || !blocker.isReleasable()) && ctl == c) { if (!replace) { // no compensation long nc = ((c - AC_UNIT) & AC_MASK) | (c & ~AC_MASK);
ForkJoinPool p = ((t instanceof ForkJoinWorkerThread) ? ((ForkJoinWorkerThread)t).pool : null); while (!blocker.isReleasable()) { if (p == null || p.tryCompensate(null, blocker)) { try { do {} while (!blocker.isReleasable() && !blocker.block()); } finally { if (p != null)
do {} while (!blocker.isReleasable() && !blocker.block());
/** * If necessary, compensates for blocker, and blocks */ private void awaitBlocker(ManagedBlocker blocker) throws InterruptedException { while (!blocker.isReleasable()) { if (tryPreBlock()) { try { do {} while (!blocker.isReleasable() && !blocker.block()); } finally { postBlock(); } break; } } }