IFuture 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
一个 Future
表示异步计算的结果。
[Android.Runtime.Register("java/util/concurrent/Future", "", "Java.Util.Concurrent.IFutureInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "V" })]
public interface IFuture : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/Future", "", "Java.Util.Concurrent.IFutureInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "V" })>]
type IFuture = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 派生
- 属性
- 实现
注解
一个 Future
表示异步计算的结果。 提供了方法来检查计算是否完成、等待计算完成以及检索计算结果。 仅当计算完成时,才能使用方法 get
检索结果,必要时会阻塞,直到它准备就绪。 取消由 cancel
方法执行。 提供了其他方法来确定任务是正常完成还是被取消。 计算完成后,无法取消计算。 如果要出于可取消性目的使用, Future
但不提供可用结果,可以声明窗体 Future<?>
的类型,并作为基础任务的结果返回 null
。
<b>示例用法</b> (请注意,以下类都是构成的。
{@code
interface ArchiveSearcher { String search(String target); }
class App {
ExecutorService executor = ...;
ArchiveSearcher searcher = ...;
void showSearch(String target) throws InterruptedException {
Callable<String> task = () -> searcher.search(target);
Future<String> future = executor.submit(task);
displayOtherThings(); // do other things while searching
try {
displayText(future.get()); // use future
} catch (ExecutionException ex) { cleanup(); return; }
}
}}
该FutureTask
类是该实现Runnable
的Future
实现,因此可由一个Executor
实现执行。 例如,上述构造 submit
可以替换为:
{@code
FutureTask<String> future = new FutureTask<>(task);
executor.execute(future);}
内存一致性效果:异步计算<在>另一个线程中的相应Future.get()
操作之前</i> 操作执行的操作。
在 1.5 中添加。
适用于 . 的 java.util.concurrent.Future
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
属性
Handle |
获取基础 Android 对象的 JNI 值。 (继承自 IJavaObject) |
IsCancelled |
返回 |
IsDone |
返回 |
JniIdentityHashCode |
返回包装实例的值 |
JniManagedPeerState |
托管对等方的状态。 (继承自 IJavaPeerable) |
JniPeerMembers |
成员访问和调用支持。 (继承自 IJavaPeerable) |
PeerReference |
返回 JniObjectReference 包装的 Java 对象实例。 (继承自 IJavaPeerable) |
方法
Cancel(Boolean) |
尝试取消执行此任务。 |
Disposed() |
在释放实例时调用。 (继承自 IJavaPeerable) |
DisposeUnlessReferenced() |
如果没有对此实例的未完成引用,则调用 |
Finalized() |
在实例完成时调用。 (继承自 IJavaPeerable) |
Get() |
根据需要等待计算完成,然后检索其结果。 |
Get(Int64, TimeUnit) |
如果需要,最多等待给定时间计算完成,然后检索其结果(如果可用)。 |
SetJniIdentityHashCode(Int32) |
设置由 |
SetJniManagedPeerState(JniManagedPeerStates) |
一个 |
SetPeerReference(JniObjectReference) |
设置由 |
UnregisterFromRuntime() |
取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
一个 |
GetJniTypeName(IJavaPeerable) |
一个 |
GetAsync(IFuture, Int64, TimeUnit) |
一个 |
GetAsync(IFuture) |
一个 |