IFuture インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
A 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
- 派生
- 属性
- 実装
注釈
A Future
は、非同期計算の結果を表します。 計算が完了したかどうかを確認し、その完了を待機し、計算の結果を取得するメソッドが用意されています。 結果は、計算が完了したときにのみメソッド get
を使用して取得でき、準備ができるまで必要に応じてブロックされます。 キャンセルはメソッドによって cancel
実行されます。 タスクが正常に完了したか、取り消されたかを判断するための追加のメソッドが用意されています。 計算が完了すると、計算を取り消すことはできません。 キャンセル可能性のために a 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
実装する実装Future
Runnable
であるためExecutor
、. たとえば、上記の構造を submit
次のように置き換えることができます。
{@code
FutureTask<String> future = new FutureTask<>(task);
executor.execute(future);}
メモリ整合性の影響: 非同期計算<によって実行されたアクションは>、別のスレッドで対応するFuture.get()
アクションの後に発生します<>。
1\.5 で追加されました。
の Java ドキュメントjava.util.concurrent.Future
このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。
プロパティ
Handle |
基になる Android オブジェクトの JNI 値を取得します。 (継承元 IJavaObject) |
IsCancelled |
このタスクが |
IsDone |
このタスクが |
JniIdentityHashCode |
ラップされたインスタンスの |
JniManagedPeerState |
マネージド ピアの状態。 (継承元 IJavaPeerable) |
JniPeerMembers |
メンバー アクセスと呼び出しのサポート。 (継承元 IJavaPeerable) |
PeerReference |
ラップされた Java オブジェクト インスタンスの a JniObjectReference を返します。 (継承元 IJavaPeerable) |
メソッド
Cancel(Boolean) |
このタスクの実行を取り消そうとします。 |
Disposed() |
インスタンスが破棄されたときに呼び出されます。 (継承元 IJavaPeerable) |
DisposeUnlessReferenced() |
このインスタンスへの未処理の参照がない場合は、呼び出 |
Finalized() |
インスタンスが終了したときに呼び出されます。 (継承元 IJavaPeerable) |
Get() |
計算が完了するまで必要に応じて待機し、その結果を取得します。 |
Get(Int64, TimeUnit) |
必要に応じて、計算が完了するまで最大で指定された時間待機し、その結果 (使用可能な場合) を取得します。 |
SetJniIdentityHashCode(Int32) |
によって |
SetJniManagedPeerState(JniManagedPeerStates) |
A |
SetPeerReference(JniObjectReference) |
によって |
UnregisterFromRuntime() |
ランタイムが将来 Java.Interop.JniRuntime+JniValueManager.PeekValue の呼び出しから返されないように、このインスタンスの登録を解除します。 (継承元 IJavaPeerable) |
拡張メソッド
JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
JavaCast<TResult>(IJavaObject) |
A |
GetJniTypeName(IJavaPeerable) |
A |
GetAsync(IFuture, Int64, TimeUnit) |
A |
GetAsync(IFuture) |
A |