Java AQS锁中,acquireQueued方法中什么异常会导致进入的cancelAcquire()方法?
sawi 2019-10-18 03:59:17 final boolean acquireQueued(final Node node, int arg) {
boolean failed = true;
try {
boolean interrupted = false;
for (;;) {
final Node p = node.predecessor();
if (p == head && tryAcquire(arg)) {
setHead(node);
p.next = null; // help GC
failed = false;
return interrupted;
}
if (shouldParkAfterFailedAcquire(p, node) &&
parkAndCheckInterrupt())
interrupted = true;
}
} finally {
if (failed)//如何进入该方法???
cancelAcquire(node);
}
}