org.jgroups.util
Class Promise<T>

java.lang.Object
  extended by 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.

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

Author:
Bela Ban

Constructor Summary
Promise()
           
 
Method Summary
protected  T _getResultWithTimeout(long timeout)
          Blocks until a result is available, or timeout milliseconds have elapsed.
 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 - in ms
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 - in ms
Returns:
T

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

_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)


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