Class Promise<T>

java.lang.Object
org.jgroups.util.Promise<T>
Type Parameters:
T - T

public class Promise<T> extends Object
Allows a thread to submit an asynchronous request and to wait for the result. The caller may choose to check for the result at a later time, or immediately and it may block or not. Both the caller and responder have to know the promise.

When the result is available, hasResult() will always return true and getResult() will return the result. In order to block for a different result, reset() has to be called first.

Author:
Bela Ban
  • Field Details

    • lock

      protected final Lock lock
    • cond

      protected final CondVar cond
    • result

      protected T result
    • hasResult

      protected volatile boolean hasResult
  • Constructor Details

    • Promise

      public Promise()
  • Method Details

    • getResultWithTimeout

      public T getResultWithTimeout(long timeout) throws TimeoutException
      Blocks until a result is available, or timeout milliseconds have elapsed
      Parameters:
      timeout - in ms
      Returns:
      An object
      Throws:
      TimeoutException - If a timeout occurred (implies that timeout > 0)
    • getResultWithTimeout

      public T getResultWithTimeout(long timeout, boolean reset) throws TimeoutException
      Throws:
      TimeoutException
    • getResult

      public T getResult()
      Returns when the result is available (blocking until tthe result is available)
    • getResult

      public T getResult(long timeout)
      Returns the result, but never throws a TimeoutException; returns null instead.
      Parameters:
      timeout - in ms
      Returns:
      T
    • getResult

      public T getResult(long timeout, boolean reset)
    • hasResult

      public boolean hasResult()
      Checks whether result is available. Does not block.
    • setResult

      public void setResult(T obj)
      Sets the result and notifies any threads waiting for it
    • setResult

      public void setResult(T obj, boolean signal_all)
    • reset

      public void reset()
      Causes all waiting threads to return
    • reset

      public void reset(boolean signal)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • _getResultWithTimeout

      protected T _getResultWithTimeout(long timeout) throws TimeoutException
      Blocks until a result is available, or timeout milliseconds have elapsed. Needs to be called with lock held
      Parameters:
      timeout - in ms
      Returns:
      An object
      Throws:
      TimeoutException - If a timeout occurred (implies that timeout > 0)