public class Future<V>
extends java.lang.Object
implements java.util.concurrent.Future<V>
Future represents the result of an asynchronous computation. Methods are provided to
 check if the computation is complete, to wait for its completion, and to retrieve the result of
 the computation. The result can only be retrieved using method get when the computation
 has completed, blocking if necessary until it is ready. Cancellation is performed by the
 cancel method. Additional methods are provided to determine if the task completed
 normally or was cancelled. Once a computation has completed, the computation cannot be cancelled.
 If you would like to use a Future for the sake of cancellability but not provide a usable
 result, you can declare types of the form Future<?> and return null as a result
 of the underlying task.| Modifier and Type | Method and Description | 
|---|---|
boolean | 
cancel(boolean mayInterruptIfRunning)
Attempts to cancel execution of this task. 
 | 
V | 
get()
Waits if necessary for the computation to complete, and then retrieves its result. 
 | 
V | 
get(long timeoutInMillis)
Waits if necessary for at most the given time for the computation to complete, and then
 retrieves its result, if available. 
 | 
V | 
get(long timeout,
   java.util.concurrent.TimeUnit unit)
Waits if necessary for at most the given time for the computation to complete, and then
 retrieves its result, if available. 
 | 
boolean | 
isCancelled()
Returns  
true if this task was cancelled before it completed normally. | 
boolean | 
isDone()
Returns  
true if this task completed. | 
public boolean cancel(boolean mayInterruptIfRunning)
cancel is called, this task should
 never run. If the task has already started, then the mayInterruptIfRunning parameter
 determines whether the thread executing this task should be interrupted in an attempt to stop
 the task.
 
 After this method returns, subsequent calls to isDone() will always return
 true. Subsequent calls to isCancelled() will always return true if
 this method returned true.cancel in interface java.util.concurrent.Future<V>mayInterruptIfRunning - true if the thread executing this task should be interrupted; otherwise,
            in-progress tasks are allowed to completefalse if the task could not be cancelled, typically because it has already
         completed normally; true otherwisepublic boolean isCancelled()
true if this task was cancelled before it completed normally.isCancelled in interface java.util.concurrent.Future<V>true if this task was cancelled before it completedpublic boolean isDone()
true if this task completed.
 
 Completion may be due to normal termination, an exception, or cancellation -- in all of these
 cases, this method will return true.isDone in interface java.util.concurrent.Future<V>true if this task completedpublic V get() throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
get in interface java.util.concurrent.Future<V>java.util.concurrent.CancellationException - if the computation was cancelledjava.util.concurrent.ExecutionException - if the computation threw an exceptionjava.lang.InterruptedException - if the current thread was interrupted while waitingpublic V get(long timeoutInMillis) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException, java.util.concurrent.TimeoutException
timeoutInMillis - the maximum time to wait, in millisecondsjava.util.concurrent.CancellationException - if the computation was cancelledjava.util.concurrent.ExecutionException - if the computation threw an exceptionjava.lang.InterruptedException - if the current thread was interrupted while waitingjava.util.concurrent.TimeoutException - if the wait timed outget(long, TimeUnit)public V get(long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException, java.util.concurrent.TimeoutException
get in interface java.util.concurrent.Future<V>timeout - the maximum time to waitunit - the time unit of the timeout argumentjava.util.concurrent.CancellationException - if the computation was cancelledjava.util.concurrent.ExecutionException - if the computation threw an exceptionjava.lang.InterruptedException - if the current thread was interrupted while waitingjava.util.concurrent.TimeoutException - if the wait timed out