我正在查看 java.uti.concurrent.locks.AbstractQueuedSynchronizer 的源代码,acquire() 方法看起来像这样 -
public final void acquire(int arg) {
if (!tryAcquire(arg) &&
acquireQueued(addWaiter(Node.EXCLUSIVE), arg))
Thread.currentThread().interrupt();
}
为什么它会中断调用acquire()的线程?如果在线程 run() 方法中的某处进行了检查,那么它可能会在调用 acquire() 之后通过,这可能是不可取的和没有想到的?
有人想弄清楚为什么上面的代码会这样做吗?