IExecutor インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
送信された Runnable タスクを実行するオブジェクト。
[Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")]
public interface IExecutor : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")>]
type IExecutor = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 派生
- 属性
- 実装
注釈
送信された Runnable タスクを実行するオブジェクト。 このインターフェイスは、スレッドの使用の詳細、スケジュール設定など、各タスクの実行方法のメカニズムからタスクの送信を切り離す方法を提供します。通常、スレッドを明示的に作成する代わりに、 Executor が使用されます。 たとえば、一連のタスクごとに new Thread(new RunnableTask()).start() を呼び出す代わりに、次のコマンドを使用できます。
{@code
Executor executor = anExecutor();
executor.execute(new RunnableTask1());
executor.execute(new RunnableTask2());
...}
ただし、 Executor インターフェイスでは、実行を非同期にする必要はありません。 最も簡単なケースでは、Executor は、送信されたタスクを呼び出し元のスレッドですぐに実行できます。
{@code
class DirectExecutor implements Executor {
public void execute(Runnable r) {
r.run();
}
}}
通常、タスクは呼び出し元のスレッド以外のスレッドで実行されます。 以下の Executor は、タスクごとに新しいスレッドを生成します。
{@code
class ThreadPerTaskExecutor implements Executor {
public void execute(Runnable r) {
new Thread(r).start();
}
}}
多くの Executor 実装では、タスクをスケジュールする方法とタイミングに何らかの制限があります。 以下の Executor は、2 つ目の Executor へのタスクの送信をシリアル化し、複合実行プログラムを示します。
{@code
class SerialExecutor implements Executor {
final Queue<Runnable> tasks = new ArrayDeque<>();
final Executor executor;
Runnable active;
SerialExecutor(Executor executor) {
this.executor = executor;
}
public synchronized void execute(Runnable r) {
tasks.add(() -> {
try {
r.run();
} finally {
scheduleNext();
}
});
if (active == null) {
scheduleNext();
}
}
protected synchronized void scheduleNext() {
if ((active = tasks.poll()) != null) {
executor.execute(active);
}
}
}}
このパッケージで提供される Executor 実装は、より広範なインターフェイスである ExecutorServiceを実装します。
ThreadPoolExecutor クラスは、拡張可能なスレッド プールの実装を提供します。
Executors クラスは、これらの Executor に便利なファクトリ メソッドを提供します。
メモリ整合性の影響: Runnable オブジェクトを Executor<i>happen-before</i> に送信する前のスレッド内のアクションは、おそらく別のスレッドで実行が開始されます。
1\.5 で追加されました。
このページの一部は、Androidオープンソースプロジェクトによって作成および共有された作業に基づく変更でありCreative Commons 2.5属性ライセンスに記載されている条件に従って使用されます。
プロパティ
| 名前 | 説明 |
|---|---|
| Handle |
基になる Android オブジェクトの JNI 値を取得します。 (継承元 IJavaObject) |
| JniIdentityHashCode |
ラップされたインスタンスの |
| JniManagedPeerState |
マネージド ピアの状態。 (継承元 IJavaPeerable) |
| JniObjectReferenceControlBlock |
送信された |
| JniPeerMembers |
メンバー アクセスと呼び出しのサポート。 (継承元 IJavaPeerable) |
| PeerReference |
ラップされたJava オブジェクト インスタンスのJniObjectReferenceを返します。 (継承元 IJavaPeerable) |
メソッド
| 名前 | 説明 |
|---|---|
| Disposed() |
インスタンスが破棄されたときに呼び出されます。 (継承元 IJavaPeerable) |
| DisposeUnlessReferenced() |
このインスタンスへの未処理の参照がない場合は、 |
| Execute(IRunnable) |
将来、特定のコマンドを実行します。 |
| Finalized() |
インスタンスが終了したときに呼び出されます。 (継承元 IJavaPeerable) |
| SetJniIdentityHashCode(Int32) |
|
| SetJniManagedPeerState(JniManagedPeerStates) |
送信された |
| SetPeerReference(JniObjectReference) |
|
| UnregisterFromRuntime() |
ランタイムが将来の Java.Interop.JniRuntime+JniValueManager.PeekValue 呼び出しから返されないように、このインスタンスの登録を解除します。 (継承元 IJavaPeerable) |
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
送信された |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|