Class DistributedDoubleBarrier

java.lang.Object
org.apache.curator.framework.recipes.barriers.DistributedDoubleBarrier

public class DistributedDoubleBarrier extends Object

A double barrier as described in the ZK recipes. Quoting the recipe:

Double barriers enable clients to synchronize the beginning and the end of a computation. When enough processes have joined the barrier, processes start their computation and leave the barrier once they have finished.
  • Constructor Details

    • DistributedDoubleBarrier

      public DistributedDoubleBarrier(CuratorFramework client, String barrierPath, int memberQty)
      Creates the barrier abstraction. memberQty is the number of members in the barrier. When enter() is called, it blocks until all members have entered. When leave() is called, it blocks until all members have left.
      Parameters:
      client - the client
      barrierPath - path to use
      memberQty - the number of members in the barrier. NOTE: more than memberQty can enter the barrier. memberQty is a threshold, not a limit
  • Method Details

    • enter

      public void enter() throws Exception
      Enter the barrier and block until all members have entered
      Throws:
      Exception - interruptions, errors, etc.
    • enter

      public boolean enter(long maxWait, TimeUnit unit) throws Exception
      Enter the barrier and block until all members have entered or the timeout has elapsed
      Parameters:
      maxWait - max time to block
      unit - time unit
      Returns:
      true if the entry was successful, false if the timeout elapsed first
      Throws:
      Exception - interruptions, errors, etc.
    • leave

      public void leave() throws Exception
      Leave the barrier and block until all members have left
      Throws:
      Exception - interruptions, errors, etc.
    • leave

      public boolean leave(long maxWait, TimeUnit unit) throws Exception
      Leave the barrier and block until all members have left or the timeout has elapsed
      Parameters:
      maxWait - max time to block
      unit - time unit
      Returns:
      true if leaving was successful, false if the timeout elapsed first
      Throws:
      Exception - interruptions, errors, etc.
    • getChildrenForEntering

      protected List<String> getChildrenForEntering() throws Exception
      Throws:
      Exception