/** * Acquires in exclusive mode, ignoring interrupts. Implemented by invoking at * least once {@link #tryAcquire}, returning on success. Otherwise the thread * is queued, possibly repeatedly blocking and unblocking, invoking * {@link #tryAcquire} until success. * * @param arg * the acquire argument. This value is conveyed to * {@link #tryAcquire} but is otherwise uninterpreted and can * represent anything you like. */ public final void acquire(int arg, Object id) { if (!tryAcquire(arg, id) && acquireQueued(addWaiter(Node.EXCLUSIVE), arg, id)) selfInterrupt(); }