Class InterProcessMultiLock

java.lang.Object
org.apache.curator.framework.recipes.locks.InterProcessMultiLock
All Implemented Interfaces:
InterProcessLock

public class InterProcessMultiLock extends Object implements InterProcessLock
A container that manages multiple locks as a single entity. When acquire() is called, all the locks are acquired. If that fails, any paths that were acquired are released. Similarly, when release() is called, all locks are released (failures are ignored).
  • Constructor Details

    • InterProcessMultiLock

      public InterProcessMultiLock(CuratorFramework client, List<String> paths)
      Creates a multi lock of InterProcessMutexs
      Parameters:
      client - the client
      paths - list of paths to manage in the order that they are to be locked
    • InterProcessMultiLock

      public InterProcessMultiLock(List<InterProcessLock> locks)
      Creates a multi lock of any type of inter process lock
      Parameters:
      locks - the locks
  • Method Details

    • acquire

      public void acquire() throws Exception
      Acquire the mutex - blocking until it's available. Each call to acquire must be balanced by a call to InterProcessLock.release()
      Specified by:
      acquire in interface InterProcessLock
      Throws:
      Exception - ZK errors, connection interruptions
    • acquire

      public boolean acquire(long time, TimeUnit unit) throws Exception
      Acquire the mutex - blocks until it's available or the given time expires. Each call to acquire that returns true must be balanced by a call to InterProcessLock.release()
      Specified by:
      acquire in interface InterProcessLock
      Parameters:
      time - time to wait
      unit - time unit
      Returns:
      true if the mutex was acquired, false if not
      Throws:
      Exception - ZK errors, connection interruptions
    • release

      public void release() throws Exception
      Perform one release of the mutex.

      NOTE: locks are released in the reverse order that they were acquired.

      Specified by:
      release in interface InterProcessLock
      Throws:
      Exception - ZK errors, interruptions, current thread does not own the lock
    • isAcquiredInThisProcess

      public boolean isAcquiredInThisProcess()
      Description copied from interface: InterProcessLock
      Returns true if the mutex is acquired by a thread in this JVM
      Specified by:
      isAcquiredInThisProcess in interface InterProcessLock
      Returns:
      true/false