Class InterProcessSemaphoreMutex

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

public class InterProcessSemaphoreMutex extends Object implements InterProcessLock
A NON re-entrant mutex that works across JVMs. Uses Zookeeper to hold the lock. All processes in all JVMs that use the same lock path will achieve an inter-process critical section.
  • Constructor Details

    • InterProcessSemaphoreMutex

      public InterProcessSemaphoreMutex(CuratorFramework client, String path)
      Parameters:
      client - the client
      path - path for the lock
  • Method Details

    • acquire

      public void acquire() throws Exception
      Description copied from interface: InterProcessLock
      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
      Description copied from interface: InterProcessLock
      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: Unlike other implementations of InterProcessLock.release(), this method will NOT throw an exception if it is called on a different thread than the one which acquired the lock.

      Specified by:
      release in interface InterProcessLock
      Throws:
      Exception - ZK errors, interruptions
    • 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