V
- The result type returned by this Future's get methodpublic interface Future<V>
Future<?>
and return null as a result of the underlying task.
Sample Usage (Note that the following classes are all made-up.)
interface ArchiveSearcher { String search(String target); }
class App {
ExecutorService executor = ...
ArchiveSearcher searcher = ...
void showSearch(final String target)
throws InterruptedException {
Future<String> future
= executor.submit(new Callable<String>() {
public String call() {
return searcher.search(target);
}});
displayOtherThings(); // do other things while searching
try {
displayText(future.get()); // use future
} catch (ExecutionException ex) { cleanup(); return; }
}
}
Memory consistency effects: Actions taken by the asynchronous computation
happen-before actions following the corresponding
Future.get()
in another thread.
Executor
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 timeout,
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.
|
boolean cancel(boolean mayInterruptIfRunning)
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.
mayInterruptIfRunning
- true if the thread executing this task should be interrupted; otherwise, in-progress tasks
are allowed to complete@Nullable V get() throws InterruptedException, ExecutionException
CancellationException
- if the computation was cancelledExecutionException
- if the computation threw an exceptionInterruptedException
- if the current thread was interrupted while waiting@Nullable V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
timeout
- the maximum time to waitunit
- the time unit of the timeout argumentCancellationException
- if the computation was cancelledExecutionException
- if the computation threw an exceptionInterruptedException
- if the current thread was interrupted while waitingTimeoutException
- if the wait timed outboolean isCancelled()
boolean isDone()