com.netflix.curator.framework.recipes.locks
Class InterProcessMultiLock

java.lang.Object
  extended by com.netflix.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 Summary
InterProcessMultiLock(CuratorFramework client, List<String> paths)
          Creates a multi lock of InterProcessMutexs
InterProcessMultiLock(List<InterProcessLock> locks)
          Creates a multi lock of any type of inter process lock
 
Method Summary
 void acquire()
          Acquire the mutex - blocking until it's available.
 boolean acquire(long time, TimeUnit unit)
          Acquire the mutex - blocks until it's available or the given time expires.
 boolean isAcquiredInThisProcess()
          Returns true if the mutex is acquired by a thread in this JVM
 void release()
          Perform one release of the mutex if the calling thread is the same thread that acquired it.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

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 Detail

acquire

public void acquire()
             throws Exception
Acquire the mutex - blocking until it's available. Note: the same thread can call acquire re-entrantly. Each call to acquire must be balanced by a call to InterProcessLock.release()

Specified by:
acquire in interface InterProcessLock
Throws:
Exception - ZK errors, interruptions, another thread owns the lock

acquire

public boolean acquire(long time,
                       TimeUnit unit)
                throws Exception
Acquire the mutex - blocks until it's available or the given time expires. Note: the same thread can call acquire re-entrantly. 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, interruptions, another thread owns the lock

release

public void release()
             throws Exception
Perform one release of the mutex if the calling thread is the same thread that acquired it. If the thread had made multiple calls to acquire, the mutex will still be held when this method returns.

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


Copyright © 2012. All Rights Reserved.