/** * Acquires the lock unless the current thread is {@link Thread#interrupt interrupted}. * * <p>Acquires the lock if it is not held by another thread and returns immediately, setting the * lock hold count to one. * * <p>If the current thread already holds this lock then the hold count is incremented by one and * the method returns immediately. * * <p>If the lock is held by another thread then the current thread becomes disabled for thread * scheduling purposes and lies dormant until one of two things happens: * * <ul> * <li>The lock is acquired by the current thread; or * <li>Some other thread {@link Thread#interrupt interrupts} the current thread. * </ul> * * <p>If the lock is acquired by the current thread then the lock hold count is set to one. * * <p>If the current thread: * * <ul> * <li>has its interrupted status set on entry to this method; or * <li>is {@link Thread#interrupt interrupted} while acquiring the lock, * </ul> * * then {@link InterruptedException} is thrown and the current thread's interrupted status is * cleared. * * <p>In this implementation, as this method is an explicit interruption point, preference is * given to responding to the interrupt over normal or reentrant acquisition of the lock. * * @throws InterruptedException if the current thread is interrupted */ public void lockInterruptibly() throws InterruptedException { sync.lockInterruptibly(); }