Class Promise<T>

java.lang.Object
org.jgroups.util.Promise<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.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final CondVar
     
    protected boolean
     
    protected final Lock
     
    protected T
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected T
    _getResultWithTimeout(long timeout)
    Blocks until a result is available, or timeout milliseconds have elapsed.
    Returns when the result is available (blocking until tthe result is available)
    getResult(long timeout)
    Returns the result, but never throws a TimeoutException; returns null instead.
    getResult(long timeout, boolean reset)
     
    getResultWithTimeout(long timeout)
    Blocks until a result is available, or timeout milliseconds have elapsed
    getResultWithTimeout(long timeout, boolean reset)
     
    boolean
    Checks whether result is available.
    void
    Causes all waiting threads to return
    void
    reset(boolean signal)
     
    void
    setResult(T obj)
    Sets the result and notifies any threads waiting for it
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • 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
    • 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)