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() を呼び出した後に合格する可能性がありますが、これはおそらく望ましくなく、考えられていませんか?
上記のコードがこれを行う理由を明らかにしたい人はいますか?