package org.limewire.concurrent;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;
/**
* An {@link AsyncFuture} is an {@link ListeningFuture} with the ability
* to set the result value or {@link Exception} asynchronously.
*
* @see ListeningFuture
* @see FutureTask
*/
public interface AsyncFuture<V> extends ListeningFuture<V> {
/**
* Sets the {@link AsyncFuture}'s value and returns true on success
*/
public boolean setValue(V value);
/**
* Sets the {@link AsyncFuture}'s exception and returns true on success
*/
public boolean setException(Throwable exception);
/**
* Returns true if the {@link AsyncFuture} completed abnormally
* (i.e. {@link #get()} and {@link #get(long, TimeUnit)} will
* throw an {@link Exception}).
*/
public boolean isCompletedAbnormally();
}