Package com.illumon.util.locks
Interface FunctionalLock
- All Superinterfaces:
 Lock
- All Known Subinterfaces:
 AwareFunctionalLock
- All Known Implementing Classes:
 FunctionalReentrantLock
Extension to the 
Lock interface to enable locking for the duration of a lambda or other
 FunctionalInterface invocation.- 
Method Summary
Modifier and TypeMethodDescriptiondefault <RESULT_TYPE,EXCEPTION_TYPE extends Exception> 
RESULT_TYPEcomputeLocked(FunctionalInterfaces.ThrowingSupplier<RESULT_TYPE, EXCEPTION_TYPE> supplier) Acquire the lock, invokeFunctionalInterfaces.ThrowingSupplier.get()while holding the lock, and release the lock before returning the result.default <RESULT_TYPE,EXCEPTION_TYPE extends Exception> 
RESULT_TYPEcomputeLockedInterruptibly(FunctionalInterfaces.ThrowingSupplier<RESULT_TYPE, EXCEPTION_TYPE> supplier) Acquire the lock interruptibly, invokeFunctionalInterfaces.ThrowingSupplier.get()while holding the lock, and release the lock before returning the result.default <EXCEPTION_TYPE extends Exception>
voiddoLocked(FunctionalInterfaces.ThrowingRunnable<EXCEPTION_TYPE> runnable) Acquire the lock, invokeFunctionalInterfaces.ThrowingRunnable.run()while holding the lock, and release the lock before returning.default <EXCEPTION_TYPE extends Exception>
voiddoLockedInterruptibly(FunctionalInterfaces.ThrowingRunnable<EXCEPTION_TYPE> runnable) Acquire the lock interruptibly, invokeFunctionalInterfaces.ThrowingRunnable.run()while holding the lock, and release the lock before returning.default SafeCloseableAcquire the lock viaLock.lock()and return aSafeCloseablethat callsLock.unlock()onSafeCloseable.close().default <EXCEPTION_TYPE extends Exception>
booleantestLocked(FunctionalInterfaces.ThrowingBooleanSupplier<EXCEPTION_TYPE> supplier) Acquire the lock, invokeFunctionalInterfaces.ThrowingBooleanSupplier.get()while holding the lock, and release the lock before returning the result.Methods inherited from interface java.util.concurrent.locks.Lock
lock, lockInterruptibly, newCondition, tryLock, tryLock, unlock 
- 
Method Details
- 
doLocked
default <EXCEPTION_TYPE extends Exception> void doLocked(@NotNull FunctionalInterfaces.ThrowingRunnable<EXCEPTION_TYPE> runnable) throws EXCEPTION_TYPE Acquire the lock, invokeFunctionalInterfaces.ThrowingRunnable.run()while holding the lock, and release the lock before returning.- Parameters:
 runnable- TheFunctionalInterfaces.ThrowingRunnableto run- Throws:
 EXCEPTION_TYPE- Ifrunnablethrows its declared exception
 - 
doLockedInterruptibly
default <EXCEPTION_TYPE extends Exception> void doLockedInterruptibly(@NotNull FunctionalInterfaces.ThrowingRunnable<EXCEPTION_TYPE> runnable) throws InterruptedException, EXCEPTION_TYPE Acquire the lock interruptibly, invokeFunctionalInterfaces.ThrowingRunnable.run()while holding the lock, and release the lock before returning.- Parameters:
 runnable- TheFunctionalInterfaces.ThrowingRunnable.run()to run- Throws:
 InterruptedException- If the current thread was interrupted while waiting to acquire the lockEXCEPTION_TYPE- Ifrunnablethrows its declared exception
 - 
computeLocked
default <RESULT_TYPE,EXCEPTION_TYPE extends Exception> RESULT_TYPE computeLocked(@NotNull FunctionalInterfaces.ThrowingSupplier<RESULT_TYPE, EXCEPTION_TYPE> supplier) throws EXCEPTION_TYPEAcquire the lock, invokeFunctionalInterfaces.ThrowingSupplier.get()while holding the lock, and release the lock before returning the result.- Parameters:
 supplier- TheFunctionalInterfaces.ThrowingSupplierto get- Returns:
 - The result of invoking 
supplier - Throws:
 EXCEPTION_TYPE- Ifsupplierthrows its declared exception
 - 
testLocked
default <EXCEPTION_TYPE extends Exception> boolean testLocked(@NotNull FunctionalInterfaces.ThrowingBooleanSupplier<EXCEPTION_TYPE> supplier) throws EXCEPTION_TYPE Acquire the lock, invokeFunctionalInterfaces.ThrowingBooleanSupplier.get()while holding the lock, and release the lock before returning the result.- Parameters:
 supplier- TheFunctionalInterfaces.ThrowingBooleanSupplierto get- Returns:
 - The result of invoking 
supplier - Throws:
 EXCEPTION_TYPE- Ifsupplierthrows its declared exception
 - 
computeLockedInterruptibly
default <RESULT_TYPE,EXCEPTION_TYPE extends Exception> RESULT_TYPE computeLockedInterruptibly(@NotNull FunctionalInterfaces.ThrowingSupplier<RESULT_TYPE, EXCEPTION_TYPE> supplier) throws InterruptedException, EXCEPTION_TYPEAcquire the lock interruptibly, invokeFunctionalInterfaces.ThrowingSupplier.get()while holding the lock, and release the lock before returning the result.- Parameters:
 supplier- TheFunctionalInterfaces.ThrowingSupplierto get- Returns:
 - The result of invoking 
supplier - Throws:
 InterruptedException- If the current thread was interrupted while waiting to acquire the lockEXCEPTION_TYPE- Ifsupplierthrows its declared exception
 - 
lockCloseable
Acquire the lock viaLock.lock()and return aSafeCloseablethat callsLock.unlock()onSafeCloseable.close().- Returns:
 - the safe closeable
 
 
 -