code: final boolean acquireQueued(final Node node, int arg) {
          try {
              boolean interrupted = false;
              for (;;) {
                  final Node p = node.predecessor();
                  if (p == head && tryAcquire(arg)) {
                      setHead(node);
                      p.next = null; // help GC
                      return interrupted;
                  }
                  if (shouldParkAfterFailedAcquire(p, node) &&
                      parkAndCheckInterrupt())
                      interrupted = true;
              }
          } catch (Throwable t) {
              cancelAcquire(node);
              throw t;
          }
      }
docs: Acquires in exclusive uninterruptible mode for thread already in
  queue. Used by condition wait methods as well as acquire.
  
  @param node the node
  @param arg the acquire argument
  @return {@code true} if interrupted while waiting