org.jgroups.util

## Class Promise<T>

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

-     public class Promise<T>
      extends java.lang.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.
  Author:
    Bela Ban

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Promise()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.util.concurrent.locks.Condition` | `getCond()`
    `java.util.concurrent.locks.Lock` | `getLock()`
    `T` | `getResult()`
    `T` | `getResult(long timeout)` Returns the result, but never throws a TimeoutException; returns null instead.
    `T` | `getResultWithTimeout(long timeout)` Blocks until a result is available, or timeout milliseconds have elapsed
    `boolean` | `hasResult()` Checks whether result is available.
    `void` | `reset()` Causes all waiting threads to return
    `void` | `setResult(T obj)` Sets the result and notifies any threads waiting for it
    `java.lang.String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### Promise

          public Promise()

  - ### Method Detail

    - #### getLock

          public java.util.concurrent.locks.Lock getLock()

    - #### getCond

          public java.util.concurrent.locks.Condition getCond()

    - #### getResultWithTimeout

          public T getResultWithTimeout(long timeout)
                                 throws TimeoutException

      Blocks until a result is available, or timeout milliseconds have elapsed
      Parameters:
        `timeout` -
      Returns:
        An object
      Throws:
        `TimeoutException` - If a timeout occurred (implies that timeout > 0)

    - #### getResult

          public T getResult()

    - #### getResult

          public T getResult(long timeout)

      Returns the result, but never throws a TimeoutException; returns null instead.
      Parameters:
        `timeout` -
      Returns:
        Object

    - #### 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

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

Copyright © 1998-2009 Bela Ban / Red Hat. All Rights Reserved.