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