/* * @(#)Future.java */ package java.util.concurrent; /** * A 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 when the computation * has completed. The get method will block until the computation * has completed. Once the computation has completed, the result cannot * be changed, nor can the computation be restarted or cancelled. * *
* Sample Usage (Note that the following classes are all * made-up.)
*
* interface ArchiveSearcher { String search(String target); } * class App { * Executor executor = ... * ArchiveSearcher searcher = ... * void showSearch(final String target) throws InterruptedException { * Future<String> future = * new FutureTask<String>(new Callable<String>() { * public String call() { * return searcher.search(target); * }}); * executor.execute(future); * displayOtherThings(); // do other things while searching * try { * displayText(future.get()); // use future * } catch (ExecutionException ex) { cleanup(); return; } * } * } ** * The {@link Executors} class contains more convenient methods * for common usages. For example, the above explicit * construction could be replaced with: *
* Future<String> future = Executors.execute(executor, * new Callable<String>() { * public String call() { * return searcher.search(target); * }}); ** @since 1.5 * @see FutureTask * @see Executor * * @spec JSR-166 * @revised $Date: 2003/08/29 14:09:52 $ * @editor $Author: dl $ * @author Doug Lea */ public interface Future