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. Figure 16-85. java.util.concurrent.FutureTask<V>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 ); } |