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; }
}
}
The FutureTask
class is an implementation of Future that
implements Runnable, and so may be executed by an Executor.
For example, the above construction with submit could be replaced by:
FutureTask<String> future =
new FutureTask<String>(new Callable<String>() {
public String call() {
return searcher.search(target);
}});
executor.execute(future);
Memory consistency effects: Actions taken by the asynchronous computation
happen-before
actions following the corresponding Future.get()
in another thread.
FutureTask
,
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 completeboolean isCancelled()
boolean isDone()
V get() throws InterruptedException, ExecutionException
CancellationException
- if the computation was cancelledExecutionException
- if the computation threw an
exceptionInterruptedException
- if the current thread was interrupted
while waitingV 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 out Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.
DRAFT ea-b138