This
class is
a Runnable wrapper around a
Callable object (or around another
Runnable). FutureTask is a
generic type and the type variable V
represents the return type of the wrapped Callable
object. AbstractExecutorService uses
FutureTask to convert Callable
objects passed to the submit( ) method into
Runnable objects it can pass to the
execute( ) method.
FutureTask also implements the
Future interface, which means that the
get( ) method waits for the run(
) method to complete and provides access to the result (or
exception) of the Callable's
execution.
The protected methods set( ) and
setException( ) are invoked when the
Callable returns a value or throws an exception.
done( ) is invoked when the
Callable completes or is canceled. Subclasses can
override any of these methods to insert hooks for notification,
logging, and so on.

public class FutureTask<V> implements Future<V>, Runnable {
// Public Constructors
public FutureTask(Callable<V> callable);
public FutureTask(Runnable runnable, V result);
// Methods Implementing Future
public boolean cancel(boolean mayInterruptIfRunning);
public V get( ) throws InterruptedException, ExecutionException;
public V get(long timeout, TimeUnit unit) throws InterruptedException,
ExecutionException, TimeoutException;
public boolean isCancelled( );
public boolean isDone( );
// Methods Implementing Runnable
public void run( );
// Protected Instance Methods
protected void done( ); empty
protected boolean runAndReset( );
protected void set(V v);
protected void setException(Throwable t);
}