package org.ovirt.engine.core.utils.lock; import java.util.concurrent.locks.Lock; /** * Wrapper for a {@link Lock} to make it auto closeable.<br> * <br> * Example: * * <pre> * try (AutoCloseableLock l = new AutoCloseableLock(someLock)) { * // Thread safe code here * } * </pre> */ public final class AutoCloseableLock implements AutoCloseable { private Lock lock; /** * Construct the {@link AutoCloseableLock} and lock the given lock. * * @param lock * The lock to acquire (and eventually release). */ public AutoCloseableLock(Lock lock) { this.lock = lock; lock.lock(); } @Override public void close() { lock.unlock(); } }