答案 0 :(得分:1)
这是java.util.concurrent.Future<V>
。链接的Javadoc非常清晰,并包含一个示例。对于懒惰,这是一个copypaste:
Future
表示结果 异步计算。方法是 提供检查是否计算 完成,等待它 完成,并检索结果 的计算。结果可以 仅使用方法get
检索 当计算完成时, 必要时阻止直到它为止 准备。取消由。执行 取消方法。其他方法 提供是否确定任务 正常完成或被取消。 计算完成后,即可 计算无法取消。如果 你想用Future
作为 可取消性但不提供 一个可用的结果,你可以声明类型 表单Future<?>
并返回null
作为基本任务的结果。样本使用(请注意以下内容 课程都是由课程组成的。)
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; } } }
FutureTask
类是一个Future
的实施 实现Runnable
,也可以 由Executor
执行。例如, 以上施工提交 可以替换为:FutureTask<String> future = new FutureTask<String>(new Callable<String>() { public String call() { return searcher.search(target); }}); executor.execute(future);
内存一致性效果:操作 由异步计算 happen-before之后的行动 另一个相应的
Future.get()
线程。
FutureWrapper
只是任何父Future
的装饰器。