## 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
`Promise()`

Method Summary
`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.