Я искал исходный код java.uti.concurrent.locks.AbstractQueuedSynchronizer, а метод acquain () выглядит примерно так:
public final void acquire(int arg) {
if (!tryAcquire(arg) &&
acquireQueued(addWaiter(Node.EXCLUSIVE), arg))
Thread.currentThread().interrupt();
}
Почему он прерывает поток, вызывающий acqu ()? Если в потоке run () где-то была проверка, то она может пройти после вызова acqu (), что, вероятно, нежелательно и не задумано?
Кто-нибудь хочет пролить свет на то, почему вышеупомянутый кусок кода это делает?