edu.emory.mathcs.backport.java.util.concurrent
public interface Future
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 {@code Future.get()} in another thread.
Since: 1.5
See Also: FutureTask Executor
| Method Summary | |
|---|---|
| boolean | cancel(boolean mayInterruptIfRunning)
Attempts to cancel execution of this task. |
| Object | get()
Waits if necessary for the computation to complete, and then
retrieves its result.
|
| Object | 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.
|
After this method returns, subsequent calls to Future will always return true. Subsequent calls to Future will always return true if this method returned true.
Parameters: mayInterruptIfRunning true if the thread executing this task should be interrupted; otherwise, in-progress tasks are allowed to complete
Returns: false if the task could not be cancelled, typically because it has already completed normally; true otherwise
Returns: the computed result
Throws: CancellationException if the computation was cancelled ExecutionException if the computation threw an exception InterruptedException if the current thread was interrupted while waiting
Parameters: timeout the maximum time to wait unit the time unit of the timeout argument
Returns: the computed result
Throws: CancellationException if the computation was cancelled ExecutionException if the computation threw an exception InterruptedException if the current thread was interrupted while waiting TimeoutException if the wait timed out
Returns: true if this task was cancelled before it completed
Returns: true if this task completed